mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Rebase against 88220e0ee41640940e7686fe0cab7f1e0bfb42f1.
This commit is contained in:
parent
2414b1da6a
commit
caa2471e20
@ -1,122 +0,0 @@
|
||||
From 065142976ed5c7814830579e36612d3c515d90c3 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Tue, 5 Jan 2021 11:36:25 +1100
|
||||
Subject: [PATCH] dsound: IDirectSoundBuffer8 GetStatus return
|
||||
DSBSTATUS_LOCSOFTWARE for deferred buffers
|
||||
|
||||
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=21014
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
dlls/dsound/buffer.c | 2 +
|
||||
dlls/dsound/tests/dsound8.c | 74 +++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 76 insertions(+)
|
||||
|
||||
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
|
||||
index 96391ebba03..6393656c9fa 100644
|
||||
--- a/dlls/dsound/buffer.c
|
||||
+++ b/dlls/dsound/buffer.c
|
||||
@@ -421,6 +421,8 @@ static HRESULT WINAPI IDirectSoundBufferImpl_GetStatus(IDirectSoundBuffer8 *ifac
|
||||
if (This->playflags & DSBPLAY_LOOPING)
|
||||
*status |= DSBSTATUS_LOOPING;
|
||||
}
|
||||
+ if (This->dsbd.dwFlags & DSBCAPS_LOCDEFER)
|
||||
+ *status |= DSBSTATUS_LOCSOFTWARE;
|
||||
ReleaseSRWLockShared(&This->lock);
|
||||
|
||||
TRACE("status=%x\n", *status);
|
||||
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
|
||||
index 81c5710dbaf..85272dd9b55 100644
|
||||
--- a/dlls/dsound/tests/dsound8.c
|
||||
+++ b/dlls/dsound/tests/dsound8.c
|
||||
@@ -1809,6 +1809,79 @@ static void test_effects(void)
|
||||
ok(!ref, "Got outstanding refcount %u.\n", ref);
|
||||
}
|
||||
|
||||
+static void test_AcquireResources(void)
|
||||
+{
|
||||
+ IDirectSound8 *dsound;
|
||||
+ IDirectSoundBuffer *primary, *secondary;
|
||||
+ DSBUFFERDESC bufdesc;
|
||||
+ WAVEFORMATEX fmt;
|
||||
+ HRESULT hr;
|
||||
+
|
||||
+ hr = DirectSoundCreate8(NULL, &dsound, NULL);
|
||||
+ ok(hr == DS_OK || hr == DSERR_NODRIVER, "Got hr %#x.\n", hr);
|
||||
+ if (FAILED(hr))
|
||||
+ return;
|
||||
+
|
||||
+ hr = IDirectSound8_SetCooperativeLevel(dsound, get_hwnd(), DSSCL_PRIORITY);
|
||||
+ ok(hr == DS_OK, "Got hr %#x.\n", hr);
|
||||
+
|
||||
+ bufdesc.dwSize = sizeof(bufdesc);
|
||||
+ bufdesc.dwFlags = DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_PRIMARYBUFFER;
|
||||
+ bufdesc.dwBufferBytes = 0;
|
||||
+ bufdesc.dwReserved = 0;
|
||||
+ bufdesc.lpwfxFormat = NULL;
|
||||
+ bufdesc.guid3DAlgorithm = GUID_NULL;
|
||||
+
|
||||
+ hr = IDirectSound8_CreateSoundBuffer(dsound, &bufdesc, &primary, NULL);
|
||||
+ ok(hr == S_OK, "CreateSoundBuffer failed: %08x\n", hr);
|
||||
+ if(hr != S_OK) {
|
||||
+ IDirectSound_Release(dsound);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ fmt.wFormatTag = WAVE_FORMAT_PCM;
|
||||
+ fmt.nChannels = 2;
|
||||
+ fmt.nSamplesPerSec = 48000;
|
||||
+ fmt.wBitsPerSample = 16;
|
||||
+ fmt.nBlockAlign = fmt.nChannels * fmt.wBitsPerSample / 8;
|
||||
+ fmt.nAvgBytesPerSec = fmt.nBlockAlign * fmt.nSamplesPerSec;
|
||||
+ fmt.cbSize = 0;
|
||||
+
|
||||
+ bufdesc.lpwfxFormat = &fmt;
|
||||
+ bufdesc.dwBufferBytes = fmt.nSamplesPerSec * fmt.nBlockAlign / 10;
|
||||
+ bufdesc.dwFlags = DSBCAPS_LOCDEFER | DSBCAPS_CTRLVOLUME;
|
||||
+
|
||||
+ /* see if we can create one more */
|
||||
+ hr = IDirectSound8_CreateSoundBuffer(dsound, &bufdesc, &secondary, NULL);
|
||||
+ ok(hr == S_OK, "CreateSoundBuffer gave wrong error: %08x\n", hr);
|
||||
+ if(hr == S_OK) {
|
||||
+ DWORD status;
|
||||
+ IDirectSoundBuffer8 *buffer8;
|
||||
+
|
||||
+ hr = IDirectSoundBuffer_QueryInterface(secondary, &IID_IDirectSoundBuffer8, (void **)&buffer8);
|
||||
+ ok(hr == S_OK, "got: %08x\n", hr);
|
||||
+
|
||||
+ status = 0xFFFF;
|
||||
+ hr = IDirectSoundBuffer8_GetStatus(buffer8, &status);
|
||||
+ ok(hr == S_OK, "got: %08x\n", hr);
|
||||
+ todo_wine ok(status == 0, "got: %08x\n", status);
|
||||
+
|
||||
+ hr = IDirectSoundBuffer8_AcquireResources(buffer8, 0, 0, NULL);
|
||||
+ ok(hr == S_OK, "got: %08x\n", hr);
|
||||
+
|
||||
+ status = 0xFFFF;
|
||||
+ hr = IDirectSoundBuffer8_GetStatus(buffer8, &status);
|
||||
+ ok(hr == S_OK, "got: %08x\n", hr);
|
||||
+ ok(status == DSBSTATUS_LOCSOFTWARE, "got: %08x\n", status);
|
||||
+
|
||||
+ IDirectSoundBuffer8_Release(buffer8);
|
||||
+ IDirectSoundBuffer_Release(secondary);
|
||||
+ }
|
||||
+
|
||||
+ IDirectSoundBuffer_Release(primary);
|
||||
+ IDirectSound_Release(dsound);
|
||||
+}
|
||||
+
|
||||
START_TEST(dsound8)
|
||||
{
|
||||
DWORD cookie;
|
||||
@@ -1822,6 +1895,7 @@ START_TEST(dsound8)
|
||||
test_hw_buffers();
|
||||
test_first_device();
|
||||
test_primary_flags();
|
||||
+ test_AcquireResources();
|
||||
|
||||
hr = CoRegisterClassObject(&testdmo_clsid, (IUnknown *)&testdmo_cf,
|
||||
CLSCTX_INPROC_SERVER, REGCLS_MULTIPLEUSE, &cookie);
|
||||
--
|
||||
2.29.2
|
||||
|
@ -1 +0,0 @@
|
||||
Fixes: [21014] dsound: IDirectSoundBuffer8 GetStatus return DSBSTATUS_LOCSOFTWARE for deferred buffers
|
@ -1,4 +1,4 @@
|
||||
From 195fb3b4d9c203bcac532d0c5d7db7a37d5298c4 Mon Sep 17 00:00:00 2001
|
||||
From c17380797162d65051f0922c673c327506799bb7 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Thu, 9 Jan 2020 13:44:01 -0600
|
||||
Subject: [PATCH] ntdll/tests: Move some tests to a new sync.c file.
|
||||
@ -24,7 +24,7 @@ index ed15c51339f..9a99c01bd7c 100644
|
||||
time.c \
|
||||
virtual.c
|
||||
diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c
|
||||
index cebac8b36c0..dabc81a73f3 100644
|
||||
index f78f42e0a88..f366a661a16 100644
|
||||
--- a/dlls/ntdll/tests/om.c
|
||||
+++ b/dlls/ntdll/tests/om.c
|
||||
@@ -28,10 +28,6 @@
|
||||
@ -46,8 +46,8 @@ index cebac8b36c0..dabc81a73f3 100644
|
||||
-static NTSTATUS (WINAPI *pNtReleaseMutant)( HANDLE, PLONG );
|
||||
static NTSTATUS (WINAPI *pNtCreateSemaphore)( PHANDLE, ACCESS_MASK,const POBJECT_ATTRIBUTES,LONG,LONG );
|
||||
static NTSTATUS (WINAPI *pNtOpenSemaphore)( PHANDLE, ACCESS_MASK, const POBJECT_ATTRIBUTES );
|
||||
static NTSTATUS (WINAPI *pNtCreateTimer) ( PHANDLE, ACCESS_MASK, const POBJECT_ATTRIBUTES, TIMER_TYPE );
|
||||
@@ -64,22 +58,12 @@ static NTSTATUS (WINAPI *pNtQueryObject)(HANDLE,OBJECT_INFORMATION_CLASS,PVOID,U
|
||||
static NTSTATUS (WINAPI *pNtQuerySemaphore)( PHANDLE, SEMAPHORE_INFORMATION_CLASS, PVOID, ULONG, PULONG );
|
||||
@@ -65,22 +59,12 @@ static NTSTATUS (WINAPI *pNtQueryObject)(HANDLE,OBJECT_INFORMATION_CLASS,PVOID,U
|
||||
static NTSTATUS (WINAPI *pNtReleaseSemaphore)(HANDLE, ULONG, PULONG);
|
||||
static NTSTATUS (WINAPI *pNtCreateKeyedEvent)( HANDLE *, ACCESS_MASK, const OBJECT_ATTRIBUTES *, ULONG );
|
||||
static NTSTATUS (WINAPI *pNtOpenKeyedEvent)( HANDLE *, ACCESS_MASK, const OBJECT_ATTRIBUTES * );
|
||||
@ -70,7 +70,7 @@ index cebac8b36c0..dabc81a73f3 100644
|
||||
#define ROUND_UP(value, alignment) (((value) + ((alignment) - 1)) & ~((alignment)-1))
|
||||
|
||||
static LPCSTR wine_dbgstr_us( const UNICODE_STRING *us )
|
||||
@@ -1696,266 +1680,6 @@ static void test_type_mismatch(void)
|
||||
@@ -1697,266 +1681,6 @@ static void test_type_mismatch(void)
|
||||
pNtClose( h );
|
||||
}
|
||||
|
||||
@ -337,7 +337,7 @@ index cebac8b36c0..dabc81a73f3 100644
|
||||
static void test_null_device(void)
|
||||
{
|
||||
OBJECT_ATTRIBUTES attr;
|
||||
@@ -2029,192 +1753,6 @@ static void test_null_device(void)
|
||||
@@ -2030,119 +1754,6 @@ static void test_null_device(void)
|
||||
CloseHandle(ov.hEvent);
|
||||
}
|
||||
|
||||
@ -454,6 +454,13 @@ index cebac8b36c0..dabc81a73f3 100644
|
||||
- NtClose( mutant );
|
||||
-}
|
||||
-
|
||||
static void test_semaphore(void)
|
||||
{
|
||||
SEMAPHORE_BASIC_INFORMATION info;
|
||||
@@ -2219,79 +1830,6 @@ static void test_semaphore(void)
|
||||
NtClose( semaphore );
|
||||
}
|
||||
|
||||
-static void test_wait_on_address(void)
|
||||
-{
|
||||
- DWORD ticks;
|
||||
@ -530,7 +537,7 @@ index cebac8b36c0..dabc81a73f3 100644
|
||||
static void test_process(void)
|
||||
{
|
||||
OBJECT_ATTRIBUTES attr;
|
||||
@@ -2278,13 +1816,7 @@ START_TEST(om)
|
||||
@@ -2355,13 +1893,7 @@ START_TEST(om)
|
||||
pNtCreateMailslotFile = (void *)GetProcAddress(hntdll, "NtCreateMailslotFile");
|
||||
pNtCreateMutant = (void *)GetProcAddress(hntdll, "NtCreateMutant");
|
||||
pNtOpenEvent = (void *)GetProcAddress(hntdll, "NtOpenEvent");
|
||||
@ -544,7 +551,7 @@ index cebac8b36c0..dabc81a73f3 100644
|
||||
pNtOpenFile = (void *)GetProcAddress(hntdll, "NtOpenFile");
|
||||
pNtClose = (void *)GetProcAddress(hntdll, "NtClose");
|
||||
pRtlInitUnicodeString = (void *)GetProcAddress(hntdll, "RtlInitUnicodeString");
|
||||
@@ -2304,15 +1836,9 @@ START_TEST(om)
|
||||
@@ -2382,15 +1914,9 @@ START_TEST(om)
|
||||
pNtReleaseSemaphore = (void *)GetProcAddress(hntdll, "NtReleaseSemaphore");
|
||||
pNtCreateKeyedEvent = (void *)GetProcAddress(hntdll, "NtCreateKeyedEvent");
|
||||
pNtOpenKeyedEvent = (void *)GetProcAddress(hntdll, "NtOpenKeyedEvent");
|
||||
@ -560,12 +567,13 @@ index cebac8b36c0..dabc81a73f3 100644
|
||||
pNtOpenProcess = (void *)GetProcAddress(hntdll, "NtOpenProcess");
|
||||
pNtQuerySystemInformation = (void *)GetProcAddress(hntdll, "NtQuerySystemInformation");
|
||||
|
||||
@@ -2325,10 +1851,6 @@ START_TEST(om)
|
||||
@@ -2403,11 +1929,7 @@ START_TEST(om)
|
||||
test_query_object();
|
||||
test_query_object_types();
|
||||
test_type_mismatch();
|
||||
- test_event();
|
||||
- test_mutant();
|
||||
test_semaphore();
|
||||
- test_keyed_events();
|
||||
test_null_device();
|
||||
- test_wait_on_address();
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 4450fe4cd6c48fcd3293c7ae0c2836640d383eaa Mon Sep 17 00:00:00 2001
|
||||
From 978c8cad7a5f44402fc2daba9bccc32fa9ea64d4 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Sun, 22 Nov 2020 20:51:10 -0600
|
||||
Subject: [PATCH 13/13] ntdll: Reimplement SRW locks on top of Win32 futexes.
|
||||
Subject: [PATCH] ntdll: Reimplement SRW locks on top of Win32 futexes.
|
||||
|
||||
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
|
||||
---
|
||||
@ -10,11 +10,12 @@ Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
|
||||
dlls/ntdll/unix/sync.c | 309 --------------------------------
|
||||
dlls/ntdll/unix/unix_private.h | 6 -
|
||||
dlls/ntdll/unixlib.h | 8 -
|
||||
include/winbase.h | 24 +++
|
||||
6 files changed, 166 insertions(+), 503 deletions(-)
|
||||
include/winbase.h | 1 -
|
||||
include/winnt.h | 24 +++
|
||||
7 files changed, 166 insertions(+), 504 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
|
||||
index 133ae6d4ead..f792c8a2fb0 100644
|
||||
index 0e86ecead3d..34b076d6b71 100644
|
||||
--- a/dlls/ntdll/sync.c
|
||||
+++ b/dlls/ntdll/sync.c
|
||||
@@ -161,127 +161,23 @@ DWORD WINAPI RtlRunOnceExecuteOnce( RTL_RUN_ONCE *once, PRTL_RUN_ONCE_INIT_FN fu
|
||||
@ -171,9 +172,7 @@ index 133ae6d4ead..f792c8a2fb0 100644
|
||||
+ union { RTL_SRWLOCK *rtl; struct srw_lock *s; LONG *l; } u = { lock };
|
||||
+
|
||||
+ InterlockedIncrement16( &u.s->exclusive_waiters );
|
||||
|
||||
- if (srwlock_lock_exclusive( (unsigned int *)&lock->Ptr, SRWLOCK_RES_EXCLUSIVE ))
|
||||
- NtWaitForKeyedEvent( 0, srwlock_key_exclusive(lock), FALSE, NULL );
|
||||
+
|
||||
+ for (;;)
|
||||
+ {
|
||||
+ union { struct srw_lock s; LONG l; } old, new;
|
||||
@ -196,7 +195,9 @@ index 133ae6d4ead..f792c8a2fb0 100644
|
||||
+ wait = TRUE;
|
||||
+ }
|
||||
+ } while (InterlockedCompareExchange( u.l, new.l, old.l ) != old.l);
|
||||
+
|
||||
|
||||
- if (srwlock_lock_exclusive( (unsigned int *)&lock->Ptr, SRWLOCK_RES_EXCLUSIVE ))
|
||||
- NtWaitForKeyedEvent( 0, srwlock_key_exclusive(lock), FALSE, NULL );
|
||||
+ if (!wait) return;
|
||||
+ RtlWaitOnAddress( &u.s->owners, &new.s.owners, sizeof(short), NULL );
|
||||
+ }
|
||||
@ -208,11 +209,11 @@ index 133ae6d4ead..f792c8a2fb0 100644
|
||||
void WINAPI RtlAcquireSRWLockShared( RTL_SRWLOCK *lock )
|
||||
{
|
||||
- unsigned int val, tmp;
|
||||
+ union { RTL_SRWLOCK *rtl; struct srw_lock *s; LONG *l; } u = { lock };
|
||||
|
||||
-
|
||||
- if (unix_funcs->fast_RtlAcquireSRWLockShared( lock ) != STATUS_NOT_IMPLEMENTED)
|
||||
- return;
|
||||
-
|
||||
+ union { RTL_SRWLOCK *rtl; struct srw_lock *s; LONG *l; } u = { lock };
|
||||
|
||||
- /* Acquires a shared lock. If it's currently not possible to add elements to
|
||||
- * the shared queue, then request exclusive access instead. */
|
||||
- for (val = *(unsigned int *)&lock->Ptr;; val = tmp)
|
||||
@ -240,7 +241,9 @@ index 133ae6d4ead..f792c8a2fb0 100644
|
||||
+ {
|
||||
+ old.s = *u.s;
|
||||
+ new = old;
|
||||
+
|
||||
|
||||
- if (val & SRWLOCK_MASK_EXCLUSIVE_QUEUE)
|
||||
- NtWaitForKeyedEvent( 0, srwlock_key_shared(lock), FALSE, NULL );
|
||||
+ if (old.s.owners != -1 && !old.s.exclusive_waiters)
|
||||
+ {
|
||||
+ /* Not locked exclusive, and no exclusive waiters.
|
||||
@ -253,9 +256,7 @@ index 133ae6d4ead..f792c8a2fb0 100644
|
||||
+ wait = TRUE;
|
||||
+ }
|
||||
+ } while (InterlockedCompareExchange( u.l, new.l, old.l ) != old.l);
|
||||
|
||||
- if (val & SRWLOCK_MASK_EXCLUSIVE_QUEUE)
|
||||
- NtWaitForKeyedEvent( 0, srwlock_key_shared(lock), FALSE, NULL );
|
||||
+
|
||||
+ if (!wait) return;
|
||||
+ RtlWaitOnAddress( u.s, &new.s, sizeof(struct srw_lock), NULL );
|
||||
+ }
|
||||
@ -275,11 +276,11 @@ index 133ae6d4ead..f792c8a2fb0 100644
|
||||
+ {
|
||||
+ old.s = *u.s;
|
||||
+ new = old;
|
||||
+
|
||||
+ if (old.s.owners != -1) ERR("Lock %p is not owned exclusive!\n", lock);
|
||||
|
||||
- srwlock_leave_exclusive( lock, srwlock_unlock_exclusive( (unsigned int *)&lock->Ptr,
|
||||
- - SRWLOCK_RES_EXCLUSIVE ) - SRWLOCK_RES_EXCLUSIVE );
|
||||
+ if (old.s.owners != -1) ERR("Lock %p is not owned exclusive!\n", lock);
|
||||
+
|
||||
+ new.s.owners = 0;
|
||||
+ } while (InterlockedCompareExchange( u.l, new.l, old.l ) != old.l);
|
||||
+
|
||||
@ -303,12 +304,12 @@ index 133ae6d4ead..f792c8a2fb0 100644
|
||||
+ {
|
||||
+ old.s = *u.s;
|
||||
+ new = old;
|
||||
+
|
||||
+ if (old.s.owners == -1) ERR("Lock %p is owned exclusive!\n", lock);
|
||||
+ else if (!old.s.owners) ERR("Lock %p is not owned shared!\n", lock);
|
||||
|
||||
- srwlock_leave_shared( lock, srwlock_lock_exclusive( (unsigned int *)&lock->Ptr,
|
||||
- - SRWLOCK_RES_SHARED ) - SRWLOCK_RES_SHARED );
|
||||
+ if (old.s.owners == -1) ERR("Lock %p is owned exclusive!\n", lock);
|
||||
+ else if (!old.s.owners) ERR("Lock %p is not owned shared!\n", lock);
|
||||
+
|
||||
+ --new.s.owners;
|
||||
+ } while (InterlockedCompareExchange( u.l, new.l, old.l ) != old.l);
|
||||
+
|
||||
@ -332,9 +333,7 @@ index 133ae6d4ead..f792c8a2fb0 100644
|
||||
+ {
|
||||
+ old.s = *u.s;
|
||||
+ new.s = old.s;
|
||||
|
||||
- return InterlockedCompareExchange( (int *)&lock->Ptr, SRWLOCK_MASK_IN_EXCLUSIVE |
|
||||
- SRWLOCK_RES_EXCLUSIVE, 0 ) == 0;
|
||||
+
|
||||
+ if (!old.s.owners)
|
||||
+ {
|
||||
+ /* Not locked exclusive or shared. We can try to grab it. */
|
||||
@ -346,7 +345,9 @@ index 133ae6d4ead..f792c8a2fb0 100644
|
||||
+ ret = FALSE;
|
||||
+ }
|
||||
+ } while (InterlockedCompareExchange( u.l, new.l, old.l ) != old.l);
|
||||
+
|
||||
|
||||
- return InterlockedCompareExchange( (int *)&lock->Ptr, SRWLOCK_MASK_IN_EXCLUSIVE |
|
||||
- SRWLOCK_RES_EXCLUSIVE, 0 ) == 0;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
@ -394,10 +395,10 @@ index 133ae6d4ead..f792c8a2fb0 100644
|
||||
|
||||
/***********************************************************************
|
||||
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
|
||||
index 1633aeb97eb..8a30e6fc749 100644
|
||||
index 8539e70dd82..4a83df1ec2f 100644
|
||||
--- a/dlls/ntdll/unix/loader.c
|
||||
+++ b/dlls/ntdll/unix/loader.c
|
||||
@@ -1511,12 +1511,6 @@ static struct unix_funcs unix_funcs =
|
||||
@@ -1512,12 +1512,6 @@ static struct unix_funcs unix_funcs =
|
||||
NtCurrentTeb,
|
||||
DbgUiIssueRemoteBreakin,
|
||||
RtlGetSystemTimePrecise,
|
||||
@ -411,10 +412,10 @@ index 1633aeb97eb..8a30e6fc749 100644
|
||||
ntdll_ceil,
|
||||
ntdll_cos,
|
||||
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
|
||||
index 3645c9f9549..c32b62f9e0a 100644
|
||||
index 6b72ba3023b..455f4ffc365 100644
|
||||
--- a/dlls/ntdll/unix/sync.c
|
||||
+++ b/dlls/ntdll/unix/sync.c
|
||||
@@ -114,8 +114,6 @@ static inline ULONGLONG monotonic_counter(void)
|
||||
@@ -115,8 +115,6 @@ static inline ULONGLONG monotonic_counter(void)
|
||||
|
||||
#define FUTEX_WAIT 0
|
||||
#define FUTEX_WAKE 1
|
||||
@ -423,7 +424,7 @@ index 3645c9f9549..c32b62f9e0a 100644
|
||||
|
||||
static int futex_private = 128;
|
||||
|
||||
@@ -129,16 +127,6 @@ static inline int futex_wake( const int *addr, int val )
|
||||
@@ -130,16 +128,6 @@ static inline int futex_wake( const int *addr, int val )
|
||||
return syscall( __NR_futex, addr, FUTEX_WAKE | futex_private, val, NULL, 0, 0 );
|
||||
}
|
||||
|
||||
@ -440,7 +441,7 @@ index 3645c9f9549..c32b62f9e0a 100644
|
||||
static inline int use_futexes(void)
|
||||
{
|
||||
static int supported = -1;
|
||||
@@ -156,16 +144,6 @@ static inline int use_futexes(void)
|
||||
@@ -157,16 +145,6 @@ static inline int use_futexes(void)
|
||||
return supported;
|
||||
}
|
||||
|
||||
@ -457,7 +458,7 @@ index 3645c9f9549..c32b62f9e0a 100644
|
||||
#endif
|
||||
|
||||
|
||||
@@ -2232,290 +2210,3 @@ NTSTATUS WINAPI NtWaitForAlertByThreadId( const void *address, const LARGE_INTEG
|
||||
@@ -2287,290 +2265,3 @@ NTSTATUS WINAPI NtWaitForAlertByThreadId( const void *address, const LARGE_INTEG
|
||||
return NtWaitForSingleObject( ntdll_get_thread_data()->tid_alert_event, FALSE, timeout );
|
||||
#endif
|
||||
}
|
||||
@ -749,10 +750,10 @@ index 3645c9f9549..c32b62f9e0a 100644
|
||||
-
|
||||
-#endif
|
||||
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
|
||||
index 4462c3ad218..fe6813551e2 100644
|
||||
index e78c0c8839c..ad5bb216949 100644
|
||||
--- a/dlls/ntdll/unix/unix_private.h
|
||||
+++ b/dlls/ntdll/unix/unix_private.h
|
||||
@@ -93,12 +93,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON
|
||||
@@ -95,12 +95,6 @@ extern void (WINAPI *pKiUserApcDispatcher)(CONTEXT*,ULONG_PTR,ULONG_PTR,ULON
|
||||
extern NTSTATUS (WINAPI *pKiUserExceptionDispatcher)(EXCEPTION_RECORD*,CONTEXT*) DECLSPEC_HIDDEN;
|
||||
extern void (WINAPI *pLdrInitializeThunk)(CONTEXT*,void**,ULONG_PTR,ULONG_PTR) DECLSPEC_HIDDEN;
|
||||
extern void (WINAPI *pRtlUserThreadStart)( PRTL_THREAD_START_ROUTINE entry, void *arg ) DECLSPEC_HIDDEN;
|
||||
@ -785,10 +786,22 @@ index 6116f408572..5ffb09ce397 100644
|
||||
double (CDECL *atan)( double d );
|
||||
double (CDECL *ceil)( double d );
|
||||
diff --git a/include/winbase.h b/include/winbase.h
|
||||
index dc8aa081be4..2ebcb3e735a 100644
|
||||
index 0262e50d980..968d636f86e 100644
|
||||
--- a/include/winbase.h
|
||||
+++ b/include/winbase.h
|
||||
@@ -2928,14 +2928,18 @@ extern WCHAR * CDECL wine_get_dos_file_name( LPCSTR str );
|
||||
@@ -2918,7 +2918,6 @@ WINBASEAPI UINT WINAPI _lwrite(HFILE,LPCSTR,UINT);
|
||||
extern char * CDECL wine_get_unix_file_name( LPCWSTR dos );
|
||||
extern WCHAR * CDECL wine_get_dos_file_name( LPCSTR str );
|
||||
|
||||
-
|
||||
#ifdef __WINESRC__
|
||||
|
||||
static FORCEINLINE HANDLE WINAPI GetCurrentProcess(void)
|
||||
diff --git a/include/winnt.h b/include/winnt.h
|
||||
index 200f67080a8..05093d525f1 100644
|
||||
--- a/include/winnt.h
|
||||
+++ b/include/winnt.h
|
||||
@@ -6907,20 +6907,29 @@ static inline BOOLEAN BitScanReverse(DWORD *index, DWORD mask)
|
||||
#pragma intrinsic(_InterlockedExchange)
|
||||
#pragma intrinsic(_InterlockedExchangeAdd)
|
||||
#pragma intrinsic(_InterlockedIncrement)
|
||||
@ -807,8 +820,7 @@ index dc8aa081be4..2ebcb3e735a 100644
|
||||
|
||||
static FORCEINLINE LONG WINAPI InterlockedCompareExchange( LONG volatile *dest, LONG xchg, LONG compare )
|
||||
{
|
||||
@@ -2962,11 +2966,21 @@ static FORCEINLINE LONG WINAPI InterlockedIncrement( LONG volatile *dest )
|
||||
return _InterlockedIncrement( (long volatile *)dest );
|
||||
return _InterlockedCompareExchange( (long volatile *)dest, xchg, compare );
|
||||
}
|
||||
|
||||
+static FORCEINLINE short WINAPI InterlockedIncrement16( short volatile *dest )
|
||||
@ -816,8 +828,10 @@ index dc8aa081be4..2ebcb3e735a 100644
|
||||
+ return _InterlockedIncrement16( (short volatile *)dest );
|
||||
+}
|
||||
+
|
||||
static FORCEINLINE LONG WINAPI InterlockedDecrement( LONG volatile *dest )
|
||||
static FORCEINLINE LONGLONG WINAPI InterlockedCompareExchange64( LONGLONG volatile *dest, LONGLONG xchg, LONGLONG compare )
|
||||
{
|
||||
return _InterlockedCompareExchange64( (long long volatile *)dest, compare, xchg );
|
||||
@@ -6946,6 +6955,11 @@ static FORCEINLINE LONG WINAPI InterlockedDecrement( LONG volatile *dest )
|
||||
return _InterlockedDecrement( (long volatile *)dest );
|
||||
}
|
||||
|
||||
@ -829,7 +843,7 @@ index dc8aa081be4..2ebcb3e735a 100644
|
||||
#ifndef __i386__
|
||||
|
||||
#pragma intrinsic(_InterlockedCompareExchangePointer)
|
||||
@@ -3031,11 +3045,21 @@ static FORCEINLINE LONG WINAPI InterlockedIncrement( LONG volatile *dest )
|
||||
@@ -7010,11 +7024,21 @@ static FORCEINLINE LONG WINAPI InterlockedIncrement( LONG volatile *dest )
|
||||
return __sync_add_and_fetch( dest, 1 );
|
||||
}
|
||||
|
||||
@ -848,9 +862,9 @@ index dc8aa081be4..2ebcb3e735a 100644
|
||||
+ return __sync_add_and_fetch( dest, -1 );
|
||||
+}
|
||||
+
|
||||
static FORCEINLINE PVOID WINAPI InterlockedExchangePointer( PVOID volatile *dest, PVOID val )
|
||||
static FORCEINLINE void * WINAPI InterlockedExchangePointer( void *volatile *dest, void *val )
|
||||
{
|
||||
PVOID ret;
|
||||
void *ret;
|
||||
--
|
||||
2.29.2
|
||||
|
||||
|
@ -51,7 +51,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "477fe4ba2fceaffe96ea3910595befeb22b717a5"
|
||||
echo "88220e0ee41640940e7686fe0cab7f1e0bfb42f1"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
@ -122,7 +122,6 @@ patch_enable_all ()
|
||||
enable_dinput_remap_joystick="$1"
|
||||
enable_dsound_EAX="$1"
|
||||
enable_dsound_Fast_Mixer="$1"
|
||||
enable_dsound_localder="$1"
|
||||
enable_dwrite_FontFallback="$1"
|
||||
enable_dxdiag_new_dlls="$1"
|
||||
enable_eventfd_synchronization="$1"
|
||||
@ -454,9 +453,6 @@ patch_enable ()
|
||||
dsound-Fast_Mixer)
|
||||
enable_dsound_Fast_Mixer="$2"
|
||||
;;
|
||||
dsound-localder)
|
||||
enable_dsound_localder="$2"
|
||||
;;
|
||||
dwrite-FontFallback)
|
||||
enable_dwrite_FontFallback="$2"
|
||||
;;
|
||||
@ -2375,18 +2371,6 @@ if test "$enable_dsound_EAX" -eq 1; then
|
||||
patch_apply dsound-EAX/0022-dsound-Enable-EAX-by-default.patch
|
||||
fi
|
||||
|
||||
# Patchset dsound-localder
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#21014] dsound: IDirectSoundBuffer8 GetStatus return DSBSTATUS_LOCSOFTWARE for deferred buffers
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/dsound/buffer.c, dlls/dsound/tests/dsound8.c
|
||||
# |
|
||||
if test "$enable_dsound_localder" -eq 1; then
|
||||
patch_apply dsound-localder/0001-dsound-IDirectSoundBuffer8-GetStatus-return-DSBSTATU.patch
|
||||
fi
|
||||
|
||||
# Patchset dwrite-FontFallback
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
@ -1 +1 @@
|
||||
477fe4ba2fceaffe96ea3910595befeb22b717a5
|
||||
88220e0ee41640940e7686fe0cab7f1e0bfb42f1
|
||||
|
Loading…
x
Reference in New Issue
Block a user