diff --git a/patches/dsound-EAX/0004-dsound-Add-EAX-propset-stubs.patch b/patches/dsound-EAX/0004-dsound-Add-EAX-propset-stubs.patch index bb1f2f94..101175e1 100644 --- a/patches/dsound-EAX/0004-dsound-Add-EAX-propset-stubs.patch +++ b/patches/dsound-EAX/0004-dsound-Add-EAX-propset-stubs.patch @@ -1,4 +1,4 @@ -From c3f44de2b3a1dbcc91b1ed1a864e6995ce1eb87b Mon Sep 17 00:00:00 2001 +From d7a094dd68e005ed2271d9874ba3ee03c7dc12b2 Mon Sep 17 00:00:00 2001 From: Mark Harmstone Date: Sun, 22 Mar 2015 13:58:53 +0000 Subject: [PATCH] dsound: Add EAX propset stubs. @@ -12,10 +12,10 @@ Subject: [PATCH] dsound: Add EAX propset stubs. create mode 100644 dlls/dsound/eax.c diff --git a/dlls/dsound/Makefile.in b/dlls/dsound/Makefile.in -index 6cb653fdfa0..1c04bf34162 100644 +index 13cb6e8b615..ee097767ecd 100644 --- a/dlls/dsound/Makefile.in +++ b/dlls/dsound/Makefile.in -@@ -9,6 +9,7 @@ C_SRCS = \ +@@ -10,6 +10,7 @@ SOURCES = \ dsound_convert.c \ dsound_main.c \ duplex.c \ @@ -48,7 +48,7 @@ index 447b41bffbb..5c8c495bfe4 100644 } diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h -index b5546c7d9db..185b8efd014 100644 +index 1113d07fa21..911d60dec61 100644 --- a/dlls/dsound/dsound_private.h +++ b/dlls/dsound/dsound_private.h @@ -230,6 +230,14 @@ LONG capped_refcount_dec(LONG *ref); @@ -58,10 +58,10 @@ index b5546c7d9db..185b8efd014 100644 +/* eax.c */ +HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, + ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData, -+ ULONG cbPropData, ULONG *pcbReturned) DECLSPEC_HIDDEN; ++ ULONG cbPropData, ULONG *pcbReturned); +HRESULT WINAPI EAX_Set(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, + ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData, -+ ULONG cbPropData) DECLSPEC_HIDDEN; ++ ULONG cbPropData); + /* mixer.c */ void DSOUND_CheckEvent(const IDirectSoundBufferImpl *dsb, DWORD playpos, int len); @@ -127,5 +127,5 @@ index 00000000000..c1264f977b6 + return E_PROP_ID_UNSUPPORTED; +} -- -2.40.1 +2.42.0 diff --git a/patches/dsound-EAX/0008-dsound-Add-EAX-init-and-free-stubs.patch b/patches/dsound-EAX/0008-dsound-Add-EAX-init-and-free-stubs.patch index 4195e09a..41938b85 100644 --- a/patches/dsound-EAX/0008-dsound-Add-EAX-init-and-free-stubs.patch +++ b/patches/dsound-EAX/0008-dsound-Add-EAX-init-and-free-stubs.patch @@ -1,4 +1,4 @@ -From 3a08f97fcd9ffd224c917cc52298702b6feaea9e Mon Sep 17 00:00:00 2001 +From 5401bf0e1d666f14efae1a81383502d3c6231e57 Mon Sep 17 00:00:00 2001 From: Mark Harmstone Date: Fri, 27 Mar 2015 20:58:37 +0000 Subject: [PATCH] dsound: Add EAX init and free stubs. @@ -32,15 +32,15 @@ index ede6d9f1ba1..309d632397a 100644 free(This); diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h -index c2dcda9da67..12203876623 100644 +index a89f635739c..e58a45cfb7d 100644 --- a/dlls/dsound/dsound_private.h +++ b/dlls/dsound/dsound_private.h @@ -241,6 +241,8 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, HRESULT WINAPI EAX_Set(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData, - ULONG cbPropData) DECLSPEC_HIDDEN; -+void free_eax_buffer(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN; -+void init_eax_buffer(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN; + ULONG cbPropData); ++void free_eax_buffer(IDirectSoundBufferImpl *dsb); ++void init_eax_buffer(IDirectSoundBufferImpl *dsb); /* mixer.c */ void DSOUND_CheckEvent(const IDirectSoundBufferImpl *dsb, DWORD playpos, int len); @@ -97,5 +97,5 @@ index 03b6e0a9813..91438efc335 100644 HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, -- -2.40.1 +2.42.0 diff --git a/patches/dsound-EAX/0009-dsound-Feed-data-through-EAX-function.patch b/patches/dsound-EAX/0009-dsound-Feed-data-through-EAX-function.patch index 2a0fc5e2..09ef6b87 100644 --- a/patches/dsound-EAX/0009-dsound-Feed-data-through-EAX-function.patch +++ b/patches/dsound-EAX/0009-dsound-Feed-data-through-EAX-function.patch @@ -1,4 +1,4 @@ -From a0ff76bc868a22624a06989f675c5d574125aa5c Mon Sep 17 00:00:00 2001 +From 035915e64ffbd674e38bb46c4ac10834bfc25961 Mon Sep 17 00:00:00 2001 From: Mark Harmstone Date: Fri, 27 Mar 2015 20:59:57 +0000 Subject: [PATCH] dsound: Feed data through EAX function. @@ -10,14 +10,14 @@ Subject: [PATCH] dsound: Feed data through EAX function. 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h -index 12203876623..11cfa641d77 100644 +index e58a45cfb7d..b9b608be7c0 100644 --- a/dlls/dsound/dsound_private.h +++ b/dlls/dsound/dsound_private.h @@ -243,6 +243,7 @@ HRESULT WINAPI EAX_Set(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, - ULONG cbPropData) DECLSPEC_HIDDEN; - void free_eax_buffer(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN; - void init_eax_buffer(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN; -+void process_eax_buffer(IDirectSoundBufferImpl *dsb, float *buf, DWORD count) DECLSPEC_HIDDEN; + ULONG cbPropData); + void free_eax_buffer(IDirectSoundBufferImpl *dsb); + void init_eax_buffer(IDirectSoundBufferImpl *dsb); ++void process_eax_buffer(IDirectSoundBufferImpl *dsb, float *buf, DWORD count); /* mixer.c */ void DSOUND_CheckEvent(const IDirectSoundBufferImpl *dsb, DWORD playpos, int len); @@ -61,5 +61,5 @@ index f261588454a..33dcd8a953c 100644 ostride = dsb->device->pwfx->nChannels * sizeof(float); for (i = 0; i < frames; i++) { -- -2.40.1 +2.42.0 diff --git a/patches/dsound-EAX/0018-dsound-Various-improvements-to-EAX-support.patch b/patches/dsound-EAX/0018-dsound-Various-improvements-to-EAX-support.patch index a736b0bd..233ae6d6 100644 --- a/patches/dsound-EAX/0018-dsound-Various-improvements-to-EAX-support.patch +++ b/patches/dsound-EAX/0018-dsound-Various-improvements-to-EAX-support.patch @@ -1,4 +1,4 @@ -From 673e9f32e39fce78a02f6519a435051ffec3664d Mon Sep 17 00:00:00 2001 +From b6f55f023339b8a254680e833c9ed6e03ad2a106 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sat, 4 Apr 2015 21:09:18 +0200 Subject: [PATCH] dsound: Various improvements to EAX support. @@ -24,10 +24,10 @@ the buffers). 5 files changed, 37 insertions(+), 39 deletions(-) diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c -index 72e96765883..bdb93657017 100644 +index 309d632397a..aa7bbe13cc5 100644 --- a/dlls/dsound/buffer.c +++ b/dlls/dsound/buffer.c -@@ -1223,7 +1223,7 @@ HRESULT IDirectSoundBufferImpl_Duplicate( +@@ -1216,7 +1216,7 @@ HRESULT IDirectSoundBufferImpl_Duplicate( VOID *committedbuff; TRACE("(%p,%p,%p)\n", device, ppdsb, pdsb); @@ -36,7 +36,7 @@ index 72e96765883..bdb93657017 100644 if (dsb == NULL) { WARN("out of memory\n"); *ppdsb = NULL; -@@ -1271,6 +1271,8 @@ HRESULT IDirectSoundBufferImpl_Duplicate( +@@ -1264,6 +1264,8 @@ HRESULT IDirectSoundBufferImpl_Duplicate( InitializeSRWLock(&dsb->lock); @@ -46,7 +46,7 @@ index 72e96765883..bdb93657017 100644 hres = DirectSoundDevice_AddBuffer(device, dsb); if (hres != DS_OK) { diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c -index bdf3a824511..4df26e93c6e 100644 +index 482dc5c109d..b382b51000e 100644 --- a/dlls/dsound/dsound.c +++ b/dlls/dsound/dsound.c @@ -182,6 +182,8 @@ static HRESULT DirectSoundDevice_Create(DirectSoundDevice ** ppDevice) @@ -71,17 +71,17 @@ index a650108f570..a555a75e458 100644 float *SampleBuffer; diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h -index 9131fa8792e..f2b2c353643 100644 +index b9b608be7c0..4afddbff72f 100644 --- a/dlls/dsound/dsound_private.h +++ b/dlls/dsound/dsound_private.h -@@ -240,6 +240,7 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, +@@ -241,6 +241,7 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, HRESULT WINAPI EAX_Set(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData, - ULONG cbPropData) DECLSPEC_HIDDEN; -+void init_eax_device(DirectSoundDevice *dev) DECLSPEC_HIDDEN; - void free_eax_buffer(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN; - void init_eax_buffer(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN; - void process_eax_buffer(IDirectSoundBufferImpl *dsb, float *buf, DWORD count) DECLSPEC_HIDDEN; + ULONG cbPropData); ++void init_eax_device(DirectSoundDevice *dev); + void free_eax_buffer(IDirectSoundBufferImpl *dsb); + void init_eax_buffer(IDirectSoundBufferImpl *dsb); + void process_eax_buffer(IDirectSoundBufferImpl *dsb, float *buf, DWORD count); diff --git a/dlls/dsound/eax.c b/dlls/dsound/eax.c index 5f2b8ef07e2..2244565897b 100644 --- a/dlls/dsound/eax.c @@ -244,5 +244,5 @@ index 5f2b8ef07e2..2244565897b 100644 switch (dwPropID) { case DSPROPERTY_EAXBUFFER_ALL: -- -2.39.2 +2.42.0 diff --git a/patches/dsound-EAX/0019-dsound-Allow-disabling-of-EAX-support-in-the-registr.patch b/patches/dsound-EAX/0019-dsound-Allow-disabling-of-EAX-support-in-the-registr.patch index 5f242c4e..68c0479d 100644 --- a/patches/dsound-EAX/0019-dsound-Allow-disabling-of-EAX-support-in-the-registr.patch +++ b/patches/dsound-EAX/0019-dsound-Allow-disabling-of-EAX-support-in-the-registr.patch @@ -1,4 +1,4 @@ -From 375f83afce055fc37c5d453b0f922c604d9ad6f8 Mon Sep 17 00:00:00 2001 +From 4e1d6e94b034635b603beb7d13eab6eaab7cb3c5 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sun, 5 Apr 2015 19:13:18 +0200 Subject: [PATCH] dsound: Allow disabling of EAX support in the registry. @@ -7,9 +7,9 @@ Based on a patch by Mark Harmstone. --- dlls/dsound/buffer.c | 16 ++++++---------- dlls/dsound/dsound_main.c | 8 ++++++++ - dlls/dsound/dsound_private.h | 15 ++++++++------- + dlls/dsound/dsound_private.h | 3 ++- dlls/dsound/eax.c | 28 ++++++++++++++++++++++++++++ - 4 files changed, 50 insertions(+), 17 deletions(-) + 4 files changed, 44 insertions(+), 11 deletions(-) diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c index aa7bbe13cc5..18a16535978 100644 @@ -46,10 +46,10 @@ index aa7bbe13cc5..18a16535978 100644 return E_PROP_ID_UNSUPPORTED; diff --git a/dlls/dsound/dsound_main.c b/dlls/dsound/dsound_main.c -index 11983a4cb47..2c09f9c5b42 100644 +index 96e5fe2487e..d785e905527 100644 --- a/dlls/dsound/dsound_main.c +++ b/dlls/dsound/dsound_main.c -@@ -94,6 +94,10 @@ const WCHAR wine_vxd_drv[] = L"winemm.vxd"; +@@ -84,6 +84,10 @@ const WCHAR wine_vxd_drv[] = L"winemm.vxd"; /* All default settings, you most likely don't want to touch these, see wiki on UsefulRegistryKeys */ int ds_hel_buflen = 32768 * 2; int ds_hq_buffers_max = 4; @@ -60,7 +60,7 @@ index 11983a4cb47..2c09f9c5b42 100644 /* * Get a config key from either the app-specific or the default config -@@ -148,11 +152,15 @@ void setup_dsound_options(void) +@@ -138,11 +142,15 @@ void setup_dsound_options(void) if (!get_config_key( hkey, appkey, "HQBuffersMax", buffer, MAX_PATH )) ds_hq_buffers_max = atoi(buffer); @@ -77,7 +77,7 @@ index 11983a4cb47..2c09f9c5b42 100644 static const char * get_device_id(LPCGUID pGuid) diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h -index 1c544ad2e96..43f9df866a3 100644 +index 4afddbff72f..10c6617c38b 100644 --- a/dlls/dsound/dsound_private.h +++ b/dlls/dsound/dsound_private.h @@ -35,9 +35,9 @@ @@ -91,30 +91,14 @@ index 1c544ad2e96..43f9df866a3 100644 /***************************************************************************** * Predeclare the interface implementation structures -@@ -235,16 +235,17 @@ LONG capped_refcount_dec(LONG *ref); +@@ -235,6 +235,7 @@ LONG capped_refcount_dec(LONG *ref); HRESULT DSOUND_FullDuplexCreate(REFIID riid, void **ppv); /* eax.c */ +BOOL WINAPI EAX_QuerySupport(REFGUID guidPropSet, ULONG dwPropID, ULONG *pTypeSupport); HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData, -- ULONG cbPropData, ULONG *pcbReturned) DECLSPEC_HIDDEN; -+ ULONG cbPropData, ULONG *pcbReturned); - HRESULT WINAPI EAX_Set(IDirectSoundBufferImpl *buf, REFGUID guidPropSet, - ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData, -- ULONG cbPropData) DECLSPEC_HIDDEN; --void init_eax_device(DirectSoundDevice *dev) DECLSPEC_HIDDEN; --void free_eax_buffer(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN; --void init_eax_buffer(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN; --void process_eax_buffer(IDirectSoundBufferImpl *dsb, float *buf, DWORD count) DECLSPEC_HIDDEN; -+ ULONG cbPropData); -+void init_eax_device(DirectSoundDevice *dev); -+void free_eax_buffer(IDirectSoundBufferImpl *dsb); -+void init_eax_buffer(IDirectSoundBufferImpl *dsb); -+void process_eax_buffer(IDirectSoundBufferImpl *dsb, float *buf, DWORD count); - - /* mixer.c */ - void DSOUND_CheckEvent(const IDirectSoundBufferImpl *dsb, DWORD playpos, int len); + ULONG cbPropData, ULONG *pcbReturned); diff --git a/dlls/dsound/eax.c b/dlls/dsound/eax.c index 2244565897b..3e15ac59480 100644 --- a/dlls/dsound/eax.c @@ -169,5 +153,5 @@ index 2244565897b..3e15ac59480 100644 buf->device->eax.using_eax = TRUE; -- -2.40.1 +2.42.0 diff --git a/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch b/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch index 52032609..672ba499 100644 --- a/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch +++ b/patches/eventfd_synchronization/0003-ntdll-Create-eventfd-based-objects-for-semaphores.patch @@ -1,4 +1,4 @@ -From 05ebaac121b440567aa88de7a77d0ef19a8d9242 Mon Sep 17 00:00:00 2001 +From 955a93ac10d1328e293fbf033e28107f98c43c7f Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 12:09:22 -0500 Subject: [PATCH] ntdll: Create eventfd-based objects for semaphores. @@ -305,7 +305,7 @@ index 00000000000..7be4e03fa34 +} diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h new file mode 100644 -index 00000000000..a50a755149a +index 00000000000..5fec18860f8 --- /dev/null +++ b/dlls/ntdll/unix/esync.h @@ -0,0 +1,35 @@ @@ -329,11 +329,11 @@ index 00000000000..a50a755149a + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + -+extern int do_esync(void) DECLSPEC_HIDDEN; -+extern void esync_init(void) DECLSPEC_HIDDEN; ++extern int do_esync(void); ++extern void esync_init(void); + +extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access, -+ const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max) DECLSPEC_HIDDEN; ++ const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max); + + +/* We have to synchronize on the fd cache mutex so that our calls to receive_fd @@ -343,9 +343,9 @@ index 00000000000..a50a755149a + * "server_fd_mutex" or something similar. */ +extern pthread_mutex_t fd_cache_mutex; + -+extern int receive_fd( obj_handle_t *handle ) DECLSPEC_HIDDEN; ++extern int receive_fd( obj_handle_t *handle ); diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index 42b5aa9d84e..974a3624a28 100644 +index aa120ae38ec..fdda50575d1 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -87,6 +87,7 @@ @@ -356,7 +356,7 @@ index 42b5aa9d84e..974a3624a28 100644 #include "wine/list.h" #include "ntsyscalls.h" #include "wine/debug.h" -@@ -1811,6 +1812,7 @@ static void start_main_thread(void) +@@ -1790,6 +1791,7 @@ static void start_main_thread(void) signal_alloc_thread( teb ); dbg_init(); startup_info_size = server_init_process(); diff --git a/patches/eventfd_synchronization/0004-ntdll-Implement-NtReleaseSemaphore.patch b/patches/eventfd_synchronization/0004-ntdll-Implement-NtReleaseSemaphore.patch index 85d1e90b..6ef0b197 100644 --- a/patches/eventfd_synchronization/0004-ntdll-Implement-NtReleaseSemaphore.patch +++ b/patches/eventfd_synchronization/0004-ntdll-Implement-NtReleaseSemaphore.patch @@ -1,4 +1,4 @@ -From 06faa163af3dd5fa6e4794bf244c662533a88b69 Mon Sep 17 00:00:00 2001 +From d8135b1bdafffc23be62c216edda9ac280045753 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 12:16:34 -0500 Subject: [PATCH] ntdll: Implement NtReleaseSemaphore(). @@ -10,7 +10,7 @@ Subject: [PATCH] ntdll: Implement NtReleaseSemaphore(). 3 files changed, 47 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index 9e1ef7d8afd..c7320d78bd3 100644 +index 7be4e03fa34..e8da4bd311b 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c @@ -28,6 +28,7 @@ @@ -21,7 +21,7 @@ index 9e1ef7d8afd..c7320d78bd3 100644 #include #include #ifdef HAVE_SYS_STAT_H -@@ -171,6 +172,16 @@ static struct esync *add_to_list( HANDLE handle, enum esync_type type, int fd, v +@@ -170,6 +171,16 @@ static struct esync *add_to_list( HANDLE handle, enum esync_type type, int fd, v return &esync_list[entry][idx]; } @@ -38,7 +38,7 @@ index 9e1ef7d8afd..c7320d78bd3 100644 static NTSTATUS create_esync( enum esync_type type, HANDLE *handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr, int initval, int max ) { -@@ -226,6 +237,38 @@ extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access, +@@ -225,6 +236,38 @@ extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access, return create_esync( ESYNC_SEMAPHORE, handle, access, attr, initial, max ); } @@ -78,22 +78,22 @@ index 9e1ef7d8afd..c7320d78bd3 100644 { struct stat st; diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index a50a755149a..09838e95535 100644 +index 5fec18860f8..cbaaed3e308 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h -@@ -23,6 +23,7 @@ extern void esync_init(void) DECLSPEC_HIDDEN; +@@ -23,6 +23,7 @@ extern void esync_init(void); extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max) DECLSPEC_HIDDEN; -+extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max); ++extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ); /* We have to synchronize on the fd cache mutex so that our calls to receive_fd diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index fff4970549b..fbd28292524 100644 +index f21ceb80298..c85f985b4f3 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -359,6 +359,9 @@ NTSTATUS WINAPI NtReleaseSemaphore( HANDLE handle, ULONG count, ULONG *previous +@@ -358,6 +358,9 @@ NTSTATUS WINAPI NtReleaseSemaphore( HANDLE handle, ULONG count, ULONG *previous { unsigned int ret; @@ -104,5 +104,5 @@ index fff4970549b..fbd28292524 100644 { req->handle = wine_server_obj_handle( handle ); -- -2.38.1 +2.42.0 diff --git a/patches/eventfd_synchronization/0005-ntdll-Implement-NtClose.patch b/patches/eventfd_synchronization/0005-ntdll-Implement-NtClose.patch index b5034a98..14ae0de0 100644 --- a/patches/eventfd_synchronization/0005-ntdll-Implement-NtClose.patch +++ b/patches/eventfd_synchronization/0005-ntdll-Implement-NtClose.patch @@ -1,4 +1,4 @@ -From 7e750cacff9e1db07141e02f3763d2b24720a00b Mon Sep 17 00:00:00 2001 +From e57a0ae8ff11195fa4a29aa1c1ccc250c0036073 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 12:20:44 -0500 Subject: [PATCH] ntdll: Implement NtClose(). @@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Implement NtClose(). 3 files changed, 23 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index 8f28a36d93f..02b07bf36be 100644 +index e8da4bd311b..e031e9cb94f 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -184,6 +184,24 @@ static struct esync *get_cached_object( HANDLE handle ) +@@ -181,6 +181,24 @@ static struct esync *get_cached_object( HANDLE handle ) return &esync_list[entry][idx]; } @@ -39,22 +39,22 @@ index 8f28a36d93f..02b07bf36be 100644 const OBJECT_ATTRIBUTES *attr, int initval, int max ) { diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index 09838e95535..14e52416764 100644 +index cbaaed3e308..c63491dcaad 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h @@ -20,6 +20,7 @@ - extern int do_esync(void) DECLSPEC_HIDDEN; - extern void esync_init(void) DECLSPEC_HIDDEN; -+extern NTSTATUS esync_close( HANDLE handle ) DECLSPEC_HIDDEN; + extern int do_esync(void); + extern void esync_init(void); ++extern NTSTATUS esync_close( HANDLE handle ); extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max); diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c -index 2f1d106a8da..af67e57176a 100644 +index cd8dbbdcc10..00d665d9e62 100644 --- a/dlls/ntdll/unix/server.c +++ b/dlls/ntdll/unix/server.c -@@ -88,6 +88,7 @@ +@@ -79,6 +79,7 @@ #include "wine/server.h" #include "wine/debug.h" #include "unix_private.h" @@ -62,7 +62,7 @@ index 2f1d106a8da..af67e57176a 100644 #include "ddk/wdm.h" WINE_DEFAULT_DEBUG_CHANNEL(server); -@@ -1762,6 +1763,9 @@ NTSTATUS WINAPI NtClose( HANDLE handle ) +@@ -1839,6 +1840,9 @@ NTSTATUS WINAPI NtClose( HANDLE handle ) * retrieve it again */ fd = remove_fd_from_cache( handle ); @@ -73,5 +73,5 @@ index 2f1d106a8da..af67e57176a 100644 { req->handle = wine_server_obj_handle( handle ); -- -2.30.2 +2.42.0 diff --git a/patches/eventfd_synchronization/0006-ntdll-Implement-NtWaitForMultipleObjects.patch b/patches/eventfd_synchronization/0006-ntdll-Implement-NtWaitForMultipleObjects.patch index 7639fdd0..f7597b4b 100644 --- a/patches/eventfd_synchronization/0006-ntdll-Implement-NtWaitForMultipleObjects.patch +++ b/patches/eventfd_synchronization/0006-ntdll-Implement-NtWaitForMultipleObjects.patch @@ -1,4 +1,4 @@ -From e6666b78dbd54b0017de39c85f06900503780110 Mon Sep 17 00:00:00 2001 +From cdced5d4d89a932fa456191551899e1919a1881e Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 12:34:42 -0500 Subject: [PATCH] ntdll: Implement NtWaitForMultipleObjects(). @@ -10,7 +10,7 @@ Subject: [PATCH] ntdll: Implement NtWaitForMultipleObjects(). 3 files changed, 180 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index f111342688e..dac49af3083 100644 +index e031e9cb94f..75ceb95bc66 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c @@ -22,6 +22,8 @@ @@ -35,7 +35,7 @@ index f111342688e..dac49af3083 100644 #include #include -@@ -287,6 +295,168 @@ NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ) +@@ -286,6 +294,168 @@ NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ) return STATUS_SUCCESS; } @@ -205,24 +205,24 @@ index f111342688e..dac49af3083 100644 { struct stat st; diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index 14e52416764..87516e7597a 100644 +index c63491dcaad..92b609ebd27 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h @@ -26,6 +26,9 @@ extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max) DECLSPEC_HIDDEN; - extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max); + extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ); +extern NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_any, -+ BOOLEAN alertable, const LARGE_INTEGER *timeout ) DECLSPEC_HIDDEN; ++ BOOLEAN alertable, const LARGE_INTEGER *timeout ); + /* We have to synchronize on the fd cache mutex so that our calls to receive_fd * don't race with theirs. It looks weird, I know. diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index db992f3a9ad..bc643558a28 100644 +index c85f985b4f3..79141999e33 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -1410,6 +1410,13 @@ NTSTATUS WINAPI NtWaitForMultipleObjects( DWORD count, const HANDLE *handles, BO +@@ -1479,6 +1479,13 @@ NTSTATUS WINAPI NtWaitForMultipleObjects( DWORD count, const HANDLE *handles, BO if (!count || count > MAXIMUM_WAIT_OBJECTS) return STATUS_INVALID_PARAMETER_1; @@ -237,5 +237,5 @@ index db992f3a9ad..bc643558a28 100644 select_op.wait.op = wait_any ? SELECT_WAIT : SELECT_WAIT_ALL; for (i = 0; i < count; i++) select_op.wait.handles[i] = wine_server_obj_handle( handles[i] ); -- -2.33.0 +2.42.0 diff --git a/patches/eventfd_synchronization/0007-ntdll-server-Implement-NtCreateEvent.patch b/patches/eventfd_synchronization/0007-ntdll-server-Implement-NtCreateEvent.patch index 8e85d3a4..a6ef5475 100644 --- a/patches/eventfd_synchronization/0007-ntdll-server-Implement-NtCreateEvent.patch +++ b/patches/eventfd_synchronization/0007-ntdll-server-Implement-NtCreateEvent.patch @@ -1,4 +1,4 @@ -From 4af235c5bc5797cae39578991b302b47052afcbb Mon Sep 17 00:00:00 2001 +From 9c2870d27349ce3548c84ff1f7b5825b5c398296 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 14:40:43 -0500 Subject: [PATCH] ntdll, server: Implement NtCreateEvent(). @@ -11,10 +11,10 @@ Subject: [PATCH] ntdll, server: Implement NtCreateEvent(). 4 files changed, 49 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index 1b71105491c..e440e9baa4a 100644 +index 75ceb95bc66..06842f0c8f5 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -91,6 +91,13 @@ struct semaphore +@@ -88,6 +88,13 @@ struct semaphore }; C_ASSERT(sizeof(struct semaphore) == 8); @@ -28,7 +28,7 @@ index 1b71105491c..e440e9baa4a 100644 static char shm_name[29]; static int shm_fd; static void **shm_addrs; -@@ -297,6 +304,18 @@ NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ) +@@ -294,6 +301,18 @@ NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ) return STATUS_SUCCESS; } @@ -47,7 +47,7 @@ index 1b71105491c..e440e9baa4a 100644 #define TICKSPERSEC 10000000 #define TICKSPERMSEC 10000 -@@ -342,6 +361,14 @@ static void update_grabbed_object( struct esync *obj ) +@@ -339,6 +358,14 @@ static void update_grabbed_object( struct esync *obj ) * etc. */ InterlockedExchangeAdd( &semaphore->count, -1 ); } @@ -63,24 +63,24 @@ index 1b71105491c..e440e9baa4a 100644 /* A value of STATUS_NOT_IMPLEMENTED returned from this function means that we diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index 87516e7597a..d9c7df967f8 100644 +index 92b609ebd27..7bb963faf51 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h @@ -26,6 +26,9 @@ extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max) DECLSPEC_HIDDEN; - extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max); + extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ); +extern NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, -+ const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN initial ) DECLSPEC_HIDDEN; ++ const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN initial ); + extern NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_any, - BOOLEAN alertable, const LARGE_INTEGER *timeout ) DECLSPEC_HIDDEN; + BOOLEAN alertable, const LARGE_INTEGER *timeout ); diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index f5be91e09d4..b54874b5d3d 100644 +index 79141999e33..161c170f59c 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -440,6 +440,10 @@ NTSTATUS WINAPI NtCreateEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_ +@@ -387,6 +387,10 @@ NTSTATUS WINAPI NtCreateEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_ *handle = 0; if (type != NotificationEvent && type != SynchronizationEvent) return STATUS_INVALID_PARAMETER; @@ -92,10 +92,10 @@ index f5be91e09d4..b54874b5d3d 100644 SERVER_START_REQ( create_event ) diff --git a/server/esync.c b/server/esync.c -index e41bbbf9349..f89f29150ea 100644 +index 75ef586df30..6a63c0dd5e9 100644 --- a/server/esync.c +++ b/server/esync.c -@@ -203,6 +203,13 @@ struct semaphore +@@ -201,6 +201,13 @@ struct semaphore }; C_ASSERT(sizeof(struct semaphore) == 8); @@ -109,7 +109,7 @@ index e41bbbf9349..f89f29150ea 100644 struct esync *create_esync( struct object *root, const struct unicode_str *name, unsigned int attr, int initval, int max, enum esync_type type, const struct security_descriptor *sd ) -@@ -258,6 +265,14 @@ struct esync *create_esync( struct object *root, const struct unicode_str *name, +@@ -256,6 +263,14 @@ struct esync *create_esync( struct object *root, const struct unicode_str *name, semaphore->count = initval; break; } @@ -125,5 +125,5 @@ index e41bbbf9349..f89f29150ea 100644 assert( 0 ); } -- -2.30.2 +2.42.0 diff --git a/patches/eventfd_synchronization/0008-ntdll-Implement-NtSetEvent.patch b/patches/eventfd_synchronization/0008-ntdll-Implement-NtSetEvent.patch index ca4f2e1e..ae903f2f 100644 --- a/patches/eventfd_synchronization/0008-ntdll-Implement-NtSetEvent.patch +++ b/patches/eventfd_synchronization/0008-ntdll-Implement-NtSetEvent.patch @@ -1,4 +1,4 @@ -From ff044319027197bb9a1f20a19f01d8c299835818 Mon Sep 17 00:00:00 2001 +From e2ab736b2e8b98268bdf840a460ee54b8388328e Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 14:46:24 -0500 Subject: [PATCH] ntdll: Implement NtSetEvent(). @@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Implement NtSetEvent(). 3 files changed, 20 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index 059d7fd9ca6..410cfd3c2ce 100644 +index 06842f0c8f5..3bb7f2daf8f 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -314,6 +314,21 @@ NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, +@@ -313,6 +313,21 @@ NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, return create_esync( type, handle, access, attr, initial, 0 ); } @@ -36,22 +36,22 @@ index 059d7fd9ca6..410cfd3c2ce 100644 #define TICKSPERMSEC 10000 diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index d9c7df967f8..b585af047ee 100644 +index 7bb963faf51..d92165214d6 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h @@ -28,6 +28,7 @@ extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev extern NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN initial ) DECLSPEC_HIDDEN; -+extern NTSTATUS esync_set_event( HANDLE handle ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN initial ); ++extern NTSTATUS esync_set_event( HANDLE handle ); extern NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_any, - BOOLEAN alertable, const LARGE_INTEGER *timeout ) DECLSPEC_HIDDEN; + BOOLEAN alertable, const LARGE_INTEGER *timeout ); diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 7be736927b2..8e793941711 100644 +index 161c170f59c..706d381d7c7 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -440,8 +440,12 @@ NTSTATUS WINAPI NtOpenEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_AT +@@ -439,8 +439,12 @@ NTSTATUS WINAPI NtOpenEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_AT */ NTSTATUS WINAPI NtSetEvent( HANDLE handle, LONG *prev_state ) { @@ -65,5 +65,5 @@ index 7be736927b2..8e793941711 100644 { req->handle = wine_server_obj_handle( handle ); -- -2.38.1 +2.42.0 diff --git a/patches/eventfd_synchronization/0009-ntdll-Implement-NtResetEvent.patch b/patches/eventfd_synchronization/0009-ntdll-Implement-NtResetEvent.patch index e589f760..26bd8d0a 100644 --- a/patches/eventfd_synchronization/0009-ntdll-Implement-NtResetEvent.patch +++ b/patches/eventfd_synchronization/0009-ntdll-Implement-NtResetEvent.patch @@ -1,4 +1,4 @@ -From c1c004fcfb9d38086fd682e64aca7fd6aaad4cc9 Mon Sep 17 00:00:00 2001 +From 98024ae21fbeb4f86c89000bd7953cf192c833ef Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 14:51:21 -0500 Subject: [PATCH] ntdll: Implement NtResetEvent(). @@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Implement NtResetEvent(). 3 files changed, 21 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index 410cfd3c2ce..80eb3773ee4 100644 +index 3bb7f2daf8f..8ee0c99c5d9 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -329,6 +329,21 @@ NTSTATUS esync_set_event( HANDLE handle ) +@@ -328,6 +328,21 @@ NTSTATUS esync_set_event( HANDLE handle ) return STATUS_SUCCESS; } @@ -36,22 +36,22 @@ index 410cfd3c2ce..80eb3773ee4 100644 #define TICKSPERMSEC 10000 diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index b585af047ee..8480a213b2a 100644 +index d92165214d6..6e5d6233a2e 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h @@ -28,6 +28,7 @@ extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev extern NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN initial ) DECLSPEC_HIDDEN; -+extern NTSTATUS esync_reset_event( HANDLE handle ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_set_event( HANDLE handle ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN initial ); ++extern NTSTATUS esync_reset_event( HANDLE handle ); + extern NTSTATUS esync_set_event( HANDLE handle ); extern NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_any, diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 8e793941711..f57a825872b 100644 +index 706d381d7c7..fdf4215039b 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -463,8 +463,13 @@ NTSTATUS WINAPI NtSetEvent( HANDLE handle, LONG *prev_state ) +@@ -462,8 +462,13 @@ NTSTATUS WINAPI NtSetEvent( HANDLE handle, LONG *prev_state ) */ NTSTATUS WINAPI NtResetEvent( HANDLE handle, LONG *prev_state ) { @@ -66,5 +66,5 @@ index 8e793941711..f57a825872b 100644 { req->handle = wine_server_obj_handle( handle ); -- -2.38.1 +2.42.0 diff --git a/patches/eventfd_synchronization/0023-ntdll-server-Implement-NtCreateMutant.patch b/patches/eventfd_synchronization/0023-ntdll-server-Implement-NtCreateMutant.patch index 0c1eb19b..ed7d5692 100644 --- a/patches/eventfd_synchronization/0023-ntdll-server-Implement-NtCreateMutant.patch +++ b/patches/eventfd_synchronization/0023-ntdll-server-Implement-NtCreateMutant.patch @@ -1,4 +1,4 @@ -From 1496c3a96452deeb4ca687bc61e2125bc82fff71 Mon Sep 17 00:00:00 2001 +From a4145f3d6ea7973ce83c7eef109613482c6adf11 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 16:34:56 -0500 Subject: [PATCH] ntdll, server: Implement NtCreateMutant(). @@ -11,10 +11,10 @@ Subject: [PATCH] ntdll, server: Implement NtCreateMutant(). 4 files changed, 37 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index 88490e08ef9..df9eb2696a1 100644 +index 06d7d8babc6..e979a5b81ae 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -91,6 +91,13 @@ struct semaphore +@@ -83,6 +83,13 @@ struct semaphore }; C_ASSERT(sizeof(struct semaphore) == 8); @@ -28,7 +28,7 @@ index 88490e08ef9..df9eb2696a1 100644 struct event { int signaled; -@@ -415,6 +422,15 @@ NTSTATUS esync_reset_event( HANDLE handle ) +@@ -407,6 +414,15 @@ NTSTATUS esync_reset_event( HANDLE handle ) return STATUS_SUCCESS; } @@ -45,24 +45,24 @@ index 88490e08ef9..df9eb2696a1 100644 #define TICKSPERMSEC 10000 diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index 8480a213b2a..38ebefc9eed 100644 +index 6e5d6233a2e..9b2f88670d1 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h @@ -31,6 +31,9 @@ extern NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, - extern NTSTATUS esync_reset_event( HANDLE handle ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_set_event( HANDLE handle ) DECLSPEC_HIDDEN; + extern NTSTATUS esync_reset_event( HANDLE handle ); + extern NTSTATUS esync_set_event( HANDLE handle ); +extern NTSTATUS esync_create_mutex( HANDLE *handle, ACCESS_MASK access, -+ const OBJECT_ATTRIBUTES *attr, BOOLEAN initial ) DECLSPEC_HIDDEN; ++ const OBJECT_ATTRIBUTES *attr, BOOLEAN initial ); + extern NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_any, - BOOLEAN alertable, const LARGE_INTEGER *timeout ) DECLSPEC_HIDDEN; + BOOLEAN alertable, const LARGE_INTEGER *timeout ); diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 47ab533d5c7..7e492320cee 100644 +index fdf4215039b..1bf4a381a8f 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -608,6 +608,10 @@ NTSTATUS WINAPI NtCreateMutant( HANDLE *handle, ACCESS_MASK access, const OBJECT +@@ -555,6 +555,10 @@ NTSTATUS WINAPI NtCreateMutant( HANDLE *handle, ACCESS_MASK access, const OBJECT struct object_attributes *objattr; *handle = 0; @@ -74,10 +74,10 @@ index 47ab533d5c7..7e492320cee 100644 SERVER_START_REQ( create_mutex ) diff --git a/server/esync.c b/server/esync.c -index ac59779a454..913104e3dd4 100644 +index 669afbc70d7..3f1c61bc1f0 100644 --- a/server/esync.c +++ b/server/esync.c -@@ -204,6 +204,13 @@ struct semaphore +@@ -202,6 +202,13 @@ struct semaphore }; C_ASSERT(sizeof(struct semaphore) == 8); @@ -91,7 +91,7 @@ index ac59779a454..913104e3dd4 100644 struct event { int signaled; -@@ -274,6 +281,13 @@ struct esync *create_esync( struct object *root, const struct unicode_str *name, +@@ -272,6 +279,13 @@ struct esync *create_esync( struct object *root, const struct unicode_str *name, event->locked = 0; break; } @@ -106,5 +106,5 @@ index ac59779a454..913104e3dd4 100644 assert( 0 ); } -- -2.30.2 +2.42.0 diff --git a/patches/eventfd_synchronization/0024-ntdll-Implement-NtReleaseMutant.patch b/patches/eventfd_synchronization/0024-ntdll-Implement-NtReleaseMutant.patch index e09adcab..ec10184a 100644 --- a/patches/eventfd_synchronization/0024-ntdll-Implement-NtReleaseMutant.patch +++ b/patches/eventfd_synchronization/0024-ntdll-Implement-NtReleaseMutant.patch @@ -1,4 +1,4 @@ -From 24a1dd64bee6e9140d6f05241c03f572bb464436 Mon Sep 17 00:00:00 2001 +From 9ec9a7f034e533a613288382aaf93b468eafb945 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 16:37:49 -0500 Subject: [PATCH] ntdll: Implement NtReleaseMutant(). @@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Implement NtReleaseMutant(). 3 files changed, 38 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index 350b1ffb756..ded71e631f7 100644 +index e979a5b81ae..48fcf38a64c 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -424,6 +424,40 @@ NTSTATUS esync_create_mutex( HANDLE *handle, ACCESS_MASK access, +@@ -423,6 +423,40 @@ NTSTATUS esync_create_mutex( HANDLE *handle, ACCESS_MASK access, return create_esync( ESYNC_MUTEX, handle, access, attr, initial ? 0 : 1, 0 ); } @@ -55,22 +55,22 @@ index 350b1ffb756..ded71e631f7 100644 #define TICKSPERMSEC 10000 diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index 38ebefc9eed..e69c46ca462 100644 +index 9b2f88670d1..8eaa79a5823 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h -@@ -33,6 +33,7 @@ extern NTSTATUS esync_set_event( HANDLE handle ) DECLSPEC_HIDDEN; +@@ -33,6 +33,7 @@ extern NTSTATUS esync_set_event( HANDLE handle ); extern NTSTATUS esync_create_mutex( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, BOOLEAN initial ) DECLSPEC_HIDDEN; -+extern NTSTATUS esync_release_mutex( HANDLE *handle, LONG *prev ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, BOOLEAN initial ); ++extern NTSTATUS esync_release_mutex( HANDLE *handle, LONG *prev ); extern NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_any, - BOOLEAN alertable, const LARGE_INTEGER *timeout ) DECLSPEC_HIDDEN; + BOOLEAN alertable, const LARGE_INTEGER *timeout ); diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 2640320587e..620d013751f 100644 +index 1bf4a381a8f..20391617e40 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -609,6 +609,9 @@ NTSTATUS WINAPI NtReleaseMutant( HANDLE handle, LONG *prev_count ) +@@ -608,6 +608,9 @@ NTSTATUS WINAPI NtReleaseMutant( HANDLE handle, LONG *prev_count ) { unsigned int ret; @@ -81,5 +81,5 @@ index 2640320587e..620d013751f 100644 { req->handle = wine_server_obj_handle( handle ); -- -2.38.1 +2.42.0 diff --git a/patches/eventfd_synchronization/0028-ntdll-Implement-NtSignalAndWaitForSingleObject.patch b/patches/eventfd_synchronization/0028-ntdll-Implement-NtSignalAndWaitForSingleObject.patch index 6f46a7af..3032aac8 100644 --- a/patches/eventfd_synchronization/0028-ntdll-Implement-NtSignalAndWaitForSingleObject.patch +++ b/patches/eventfd_synchronization/0028-ntdll-Implement-NtSignalAndWaitForSingleObject.patch @@ -1,4 +1,4 @@ -From 69a95eb896feed92ce839162b83b79701d02cdcd Mon Sep 17 00:00:00 2001 +From 622de4743d9585d895bb560b4c8ac6ab01aff23f Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 16:52:39 -0500 Subject: [PATCH] ntdll: Implement NtSignalAndWaitForSingleObject(). @@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Implement NtSignalAndWaitForSingleObject(). 3 files changed, 33 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index 0682428372c..6d8653cd107 100644 +index 9e980643a6e..db70e5075d1 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -850,6 +850,34 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an +@@ -842,6 +842,34 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an return ret; } @@ -49,23 +49,23 @@ index 0682428372c..6d8653cd107 100644 { struct stat st; diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index e69c46ca462..bee08ff857f 100644 +index 8eaa79a5823..88a6d5c8975 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h -@@ -37,6 +37,8 @@ extern NTSTATUS esync_release_mutex( HANDLE *handle, LONG *prev ) DECLSPEC_HIDDE +@@ -37,6 +37,8 @@ extern NTSTATUS esync_release_mutex( HANDLE *handle, LONG *prev ); extern NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_any, - BOOLEAN alertable, const LARGE_INTEGER *timeout ) DECLSPEC_HIDDEN; + BOOLEAN alertable, const LARGE_INTEGER *timeout ); +extern NTSTATUS esync_signal_and_wait( HANDLE signal, HANDLE wait, BOOLEAN alertable, -+ const LARGE_INTEGER *timeout ) DECLSPEC_HIDDEN; ++ const LARGE_INTEGER *timeout ); /* We have to synchronize on the fd cache mutex so that our calls to receive_fd diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 1a19bb78a9c..64f96a32ccf 100644 +index 20391617e40..12ed44f7a8e 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -1320,6 +1320,9 @@ NTSTATUS WINAPI NtSignalAndWaitForSingleObject( HANDLE signal, HANDLE wait, +@@ -1531,6 +1531,9 @@ NTSTATUS WINAPI NtSignalAndWaitForSingleObject( HANDLE signal, HANDLE wait, select_op_t select_op; UINT flags = SELECT_INTERRUPTIBLE; @@ -76,5 +76,5 @@ index 1a19bb78a9c..64f96a32ccf 100644 if (alertable) flags |= SELECT_ALERTABLE; -- -2.28.0 +2.42.0 diff --git a/patches/eventfd_synchronization/0029-ntdll-Implement-NtOpenSemaphore.patch b/patches/eventfd_synchronization/0029-ntdll-Implement-NtOpenSemaphore.patch index c605ab5c..941b77aa 100644 --- a/patches/eventfd_synchronization/0029-ntdll-Implement-NtOpenSemaphore.patch +++ b/patches/eventfd_synchronization/0029-ntdll-Implement-NtOpenSemaphore.patch @@ -1,4 +1,4 @@ -From fd251549dc6a59073937ba74b195f9dc7a892616 Mon Sep 17 00:00:00 2001 +From 494fb32d263fe0329a3672e9244ba44623d9ba07 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 16:56:09 -0500 Subject: [PATCH] ntdll: Implement NtOpenSemaphore(). @@ -12,10 +12,10 @@ Subject: [PATCH] ntdll: Implement NtOpenSemaphore(). 5 files changed, 96 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index cdf5f602695..583afebb17c 100644 +index db70e5075d1..f03ad7b7b73 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -329,6 +329,45 @@ static NTSTATUS create_esync( enum esync_type type, HANDLE *handle, ACCESS_MASK +@@ -328,6 +328,45 @@ static NTSTATUS create_esync( enum esync_type type, HANDLE *handle, ACCESS_MASK return ret; } @@ -61,7 +61,7 @@ index cdf5f602695..583afebb17c 100644 extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max) { -@@ -338,6 +377,14 @@ extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access, +@@ -337,6 +376,14 @@ extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access, return create_esync( ESYNC_SEMAPHORE, handle, access, attr, initial, max ); } @@ -77,23 +77,23 @@ index cdf5f602695..583afebb17c 100644 { struct esync *obj; diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index bee08ff857f..2738e8b7f87 100644 +index 88a6d5c8975..6818be9c16f 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h -@@ -24,6 +24,8 @@ extern NTSTATUS esync_close( HANDLE handle ) DECLSPEC_HIDDEN; +@@ -24,6 +24,8 @@ extern NTSTATUS esync_close( HANDLE handle ); extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max); +extern NTSTATUS esync_open_semaphore( HANDLE *handle, ACCESS_MASK access, -+ const OBJECT_ATTRIBUTES *attr ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ) DECLSPEC_HIDDEN; ++ const OBJECT_ATTRIBUTES *attr ); + extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ); extern NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index ce3061a7f31..dd8ed16f868 100644 +index 12ed44f7a8e..31253e2235b 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -301,6 +301,10 @@ NTSTATUS WINAPI NtOpenSemaphore( HANDLE *handle, ACCESS_MASK access, const OBJEC +@@ -300,6 +300,10 @@ NTSTATUS WINAPI NtOpenSemaphore( HANDLE *handle, ACCESS_MASK access, const OBJEC unsigned int ret; *handle = 0; @@ -147,10 +147,10 @@ index 3f1c61bc1f0..eca9b6aa67d 100644 * server. The client should only read from (i.e. wait on) this object. */ DECL_HANDLER(get_esync_fd) diff --git a/server/protocol.def b/server/protocol.def -index 40bdd8a70b4..acd90615cf7 100644 +index 55a6310e603..c9ebc5528c1 100644 --- a/server/protocol.def +++ b/server/protocol.def -@@ -3812,6 +3812,18 @@ enum esync_type +@@ -3908,6 +3908,18 @@ enum esync_type unsigned int shm_idx; @END @@ -170,5 +170,5 @@ index 40bdd8a70b4..acd90615cf7 100644 @REQ(get_esync_fd) obj_handle_t handle; /* handle to the object */ -- -2.38.1 +2.42.0 diff --git a/patches/eventfd_synchronization/0030-ntdll-Implement-NtOpenEvent.patch b/patches/eventfd_synchronization/0030-ntdll-Implement-NtOpenEvent.patch index 30613371..7ed19699 100644 --- a/patches/eventfd_synchronization/0030-ntdll-Implement-NtOpenEvent.patch +++ b/patches/eventfd_synchronization/0030-ntdll-Implement-NtOpenEvent.patch @@ -1,4 +1,4 @@ -From 96393a0cd6acfcb87d11488e726d4e294e646c4f Mon Sep 17 00:00:00 2001 +From f2313d3bdf72803a41a8d38604b6ebdba4440e24 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 16:58:19 -0500 Subject: [PATCH] ntdll: Implement NtOpenEvent(). @@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Implement NtOpenEvent(). 3 files changed, 13 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index 8e7e50ce777..a03a3a09b36 100644 +index f03ad7b7b73..c0ee03c5828 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -437,6 +437,14 @@ NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, +@@ -429,6 +429,14 @@ NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, return create_esync( type, handle, access, attr, initial, 0 ); } @@ -29,23 +29,23 @@ index 8e7e50ce777..a03a3a09b36 100644 { static const uint64_t value = 1; diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index 2738e8b7f87..da1b72d4413 100644 +index 6818be9c16f..03894d61fcf 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h @@ -30,6 +30,8 @@ extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev extern NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN initial ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN initial ); +extern NTSTATUS esync_open_event( HANDLE *handle, ACCESS_MASK access, -+ const OBJECT_ATTRIBUTES *attr ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_reset_event( HANDLE handle ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_set_event( HANDLE handle ) DECLSPEC_HIDDEN; ++ const OBJECT_ATTRIBUTES *attr ); + extern NTSTATUS esync_reset_event( HANDLE handle ); + extern NTSTATUS esync_set_event( HANDLE handle ); diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 36322f6afb6..6bc8200f46b 100644 +index 31253e2235b..fcd0413ce42 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -476,6 +476,9 @@ NTSTATUS WINAPI NtOpenEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_AT +@@ -423,6 +423,9 @@ NTSTATUS WINAPI NtOpenEvent( HANDLE *handle, ACCESS_MASK access, const OBJECT_AT *handle = 0; if ((ret = validate_open_object_attributes( attr ))) return ret; @@ -56,5 +56,5 @@ index 36322f6afb6..6bc8200f46b 100644 { req->access = access; -- -2.30.2 +2.42.0 diff --git a/patches/eventfd_synchronization/0031-ntdll-Implement-NtOpenMutant.patch b/patches/eventfd_synchronization/0031-ntdll-Implement-NtOpenMutant.patch index 0275f5fc..2689fc73 100644 --- a/patches/eventfd_synchronization/0031-ntdll-Implement-NtOpenMutant.patch +++ b/patches/eventfd_synchronization/0031-ntdll-Implement-NtOpenMutant.patch @@ -1,4 +1,4 @@ -From 995f2ecab37c47bb3112d11ce2313d37711965ca Mon Sep 17 00:00:00 2001 +From 07946ba13f255372cd72467a30ef2a24ed6714c5 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 16:59:35 -0500 Subject: [PATCH] ntdll: Implement NtOpenMutant(). @@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Implement NtOpenMutant(). 3 files changed, 13 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index a03a3a09b36..d1a282c65e9 100644 +index c0ee03c5828..2844f9f760c 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -486,6 +486,14 @@ NTSTATUS esync_create_mutex( HANDLE *handle, ACCESS_MASK access, +@@ -478,6 +478,14 @@ NTSTATUS esync_create_mutex( HANDLE *handle, ACCESS_MASK access, return create_esync( ESYNC_MUTEX, handle, access, attr, initial ? 0 : 1, 0 ); } @@ -29,23 +29,23 @@ index a03a3a09b36..d1a282c65e9 100644 { struct esync *obj; diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index da1b72d4413..cb48e2cd022 100644 +index 03894d61fcf..ac12604a815 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h -@@ -37,6 +37,8 @@ extern NTSTATUS esync_set_event( HANDLE handle ) DECLSPEC_HIDDEN; +@@ -37,6 +37,8 @@ extern NTSTATUS esync_set_event( HANDLE handle ); extern NTSTATUS esync_create_mutex( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, BOOLEAN initial ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, BOOLEAN initial ); +extern NTSTATUS esync_open_mutex( HANDLE *handle, ACCESS_MASK access, -+ const OBJECT_ATTRIBUTES *attr ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_release_mutex( HANDLE *handle, LONG *prev ) DECLSPEC_HIDDEN; ++ const OBJECT_ATTRIBUTES *attr ); + extern NTSTATUS esync_release_mutex( HANDLE *handle, LONG *prev ); extern NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_any, diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 6bc8200f46b..c1c57caab40 100644 +index fcd0413ce42..33a1dc77c47 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -646,6 +646,9 @@ NTSTATUS WINAPI NtOpenMutant( HANDLE *handle, ACCESS_MASK access, const OBJECT_A +@@ -593,6 +593,9 @@ NTSTATUS WINAPI NtOpenMutant( HANDLE *handle, ACCESS_MASK access, const OBJECT_A *handle = 0; if ((ret = validate_open_object_attributes( attr ))) return ret; @@ -56,5 +56,5 @@ index 6bc8200f46b..c1c57caab40 100644 { req->access = access; -- -2.30.2 +2.42.0 diff --git a/patches/eventfd_synchronization/0043-ntdll-Implement-NtQuerySemaphore.patch b/patches/eventfd_synchronization/0043-ntdll-Implement-NtQuerySemaphore.patch index 7b5350a7..c7fd2f2e 100644 --- a/patches/eventfd_synchronization/0043-ntdll-Implement-NtQuerySemaphore.patch +++ b/patches/eventfd_synchronization/0043-ntdll-Implement-NtQuerySemaphore.patch @@ -1,4 +1,4 @@ -From 148a48dc487268a0b2d99304aee5ee4be271ded8 Mon Sep 17 00:00:00 2001 +From e79efd700a74900e5268b736dc3bbb86b0db00ce Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 17:24:17 -0500 Subject: [PATCH] ntdll: Implement NtQuerySemaphore(). @@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Implement NtQuerySemaphore(). 3 files changed, 23 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index 2a7c3865617..6837d0916be 100644 +index aeeea1731ce..f65e5389986 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -425,6 +425,25 @@ NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ) +@@ -417,6 +417,25 @@ NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ) return STATUS_SUCCESS; } @@ -40,22 +40,22 @@ index 2a7c3865617..6837d0916be 100644 const OBJECT_ATTRIBUTES *attr, EVENT_TYPE event_type, BOOLEAN initial ) { diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index cb48e2cd022..599ed6dbd9b 100644 +index ac12604a815..e7d4cd2aba4 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h @@ -26,6 +26,7 @@ extern NTSTATUS esync_create_semaphore(HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, LONG initial, LONG max); extern NTSTATUS esync_open_semaphore( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr ) DECLSPEC_HIDDEN; -+extern NTSTATUS esync_query_semaphore( HANDLE handle, void *info, ULONG *ret_len ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr ); ++extern NTSTATUS esync_query_semaphore( HANDLE handle, void *info, ULONG *ret_len ); + extern NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev ); extern NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 4a97cdd32fd..27cc6b7723f 100644 +index 33a1dc77c47..c9450003ce3 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -388,6 +388,9 @@ NTSTATUS WINAPI NtQuerySemaphore( HANDLE handle, SEMAPHORE_INFORMATION_CLASS cla +@@ -340,6 +340,9 @@ NTSTATUS WINAPI NtQuerySemaphore( HANDLE handle, SEMAPHORE_INFORMATION_CLASS cla if (len != sizeof(SEMAPHORE_BASIC_INFORMATION)) return STATUS_INFO_LENGTH_MISMATCH; @@ -66,5 +66,5 @@ index 4a97cdd32fd..27cc6b7723f 100644 { req->handle = wine_server_obj_handle( handle ); -- -2.28.0 +2.42.0 diff --git a/patches/eventfd_synchronization/0044-ntdll-Implement-NtQueryEvent.patch b/patches/eventfd_synchronization/0044-ntdll-Implement-NtQueryEvent.patch index 0e4f7be9..24b8c154 100644 --- a/patches/eventfd_synchronization/0044-ntdll-Implement-NtQueryEvent.patch +++ b/patches/eventfd_synchronization/0044-ntdll-Implement-NtQueryEvent.patch @@ -1,4 +1,4 @@ -From c22c32f977d17cf6e385d664ae5c52252f27f55a Mon Sep 17 00:00:00 2001 +From f4ff71d953f4f6fc91f0ac3cdea8c964a2911f07 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 17:26:56 -0500 Subject: [PATCH] ntdll: Implement NtQueryEvent(). @@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Implement NtQueryEvent(). 3 files changed, 24 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index 6837d0916be..e6c331675f4 100644 +index f65e5389986..c75dd23d897 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -496,6 +496,26 @@ NTSTATUS esync_reset_event( HANDLE handle ) +@@ -488,6 +488,26 @@ NTSTATUS esync_reset_event( HANDLE handle ) return STATUS_SUCCESS; } @@ -41,22 +41,22 @@ index 6837d0916be..e6c331675f4 100644 const OBJECT_ATTRIBUTES *attr, BOOLEAN initial ) { diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index 599ed6dbd9b..8ac3924da2d 100644 +index e7d4cd2aba4..9a0fcd163dd 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h @@ -33,6 +33,7 @@ extern NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN initial ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN initial ); extern NTSTATUS esync_open_event( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr ) DECLSPEC_HIDDEN; -+extern NTSTATUS esync_query_event( HANDLE handle, void *info, ULONG *ret_len ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_reset_event( HANDLE handle ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_set_event( HANDLE handle ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr ); ++extern NTSTATUS esync_query_event( HANDLE handle, void *info, ULONG *ret_len ); + extern NTSTATUS esync_reset_event( HANDLE handle ); + extern NTSTATUS esync_set_event( HANDLE handle ); diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 27cc6b7723f..52b40c84cfc 100644 +index c9450003ce3..2fea9f532bd 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -581,6 +581,9 @@ NTSTATUS WINAPI NtQueryEvent( HANDLE handle, EVENT_INFORMATION_CLASS class, +@@ -539,6 +539,9 @@ NTSTATUS WINAPI NtQueryEvent( HANDLE handle, EVENT_INFORMATION_CLASS class, if (len != sizeof(EVENT_BASIC_INFORMATION)) return STATUS_INFO_LENGTH_MISMATCH; @@ -67,5 +67,5 @@ index 27cc6b7723f..52b40c84cfc 100644 { req->handle = wine_server_obj_handle( handle ); -- -2.28.0 +2.42.0 diff --git a/patches/eventfd_synchronization/0045-ntdll-Implement-NtQueryMutant.patch b/patches/eventfd_synchronization/0045-ntdll-Implement-NtQueryMutant.patch index 1cd1c24f..30d315e8 100644 --- a/patches/eventfd_synchronization/0045-ntdll-Implement-NtQueryMutant.patch +++ b/patches/eventfd_synchronization/0045-ntdll-Implement-NtQueryMutant.patch @@ -1,4 +1,4 @@ -From b28111b0ed869637fd11d7a57440c1788bdc3a4b Mon Sep 17 00:00:00 2001 +From b930741dcf601f4a9f5cf761d57154c9216c5ec9 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 17:28:58 -0500 Subject: [PATCH] ntdll: Implement NtQueryMutant(). @@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Implement NtQueryMutant(). 3 files changed, 24 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index e6c331675f4..13cdaf4f73e 100644 +index c75dd23d897..68c060a294c 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -567,6 +567,26 @@ NTSTATUS esync_release_mutex( HANDLE *handle, LONG *prev ) +@@ -559,6 +559,26 @@ NTSTATUS esync_release_mutex( HANDLE *handle, LONG *prev ) return STATUS_SUCCESS; } @@ -41,22 +41,22 @@ index e6c331675f4..13cdaf4f73e 100644 #define TICKSPERMSEC 10000 diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index 8ac3924da2d..18788fa273b 100644 +index 9a0fcd163dd..61846238ab7 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h @@ -41,6 +41,7 @@ extern NTSTATUS esync_create_mutex( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, BOOLEAN initial ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, BOOLEAN initial ); extern NTSTATUS esync_open_mutex( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr ) DECLSPEC_HIDDEN; -+extern NTSTATUS esync_query_mutex( HANDLE handle, void *info, ULONG *ret_len ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_release_mutex( HANDLE *handle, LONG *prev ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr ); ++extern NTSTATUS esync_query_mutex( HANDLE handle, void *info, ULONG *ret_len ); + extern NTSTATUS esync_release_mutex( HANDLE *handle, LONG *prev ); extern NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_any, diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 52b40c84cfc..acec96c0a3c 100644 +index 2fea9f532bd..5d25f086d5d 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -696,6 +696,9 @@ NTSTATUS WINAPI NtQueryMutant( HANDLE handle, MUTANT_INFORMATION_CLASS class, +@@ -657,6 +657,9 @@ NTSTATUS WINAPI NtQueryMutant( HANDLE handle, MUTANT_INFORMATION_CLASS class, if (len != sizeof(MUTANT_BASIC_INFORMATION)) return STATUS_INFO_LENGTH_MISMATCH; @@ -67,5 +67,5 @@ index 52b40c84cfc..acec96c0a3c 100644 { req->handle = wine_server_obj_handle( handle ); -- -2.28.0 +2.42.0 diff --git a/patches/eventfd_synchronization/0052-ntdll-Implement-NtPulseEvent.patch b/patches/eventfd_synchronization/0052-ntdll-Implement-NtPulseEvent.patch index 1374958c..55203181 100644 --- a/patches/eventfd_synchronization/0052-ntdll-Implement-NtPulseEvent.patch +++ b/patches/eventfd_synchronization/0052-ntdll-Implement-NtPulseEvent.patch @@ -1,4 +1,4 @@ -From 1d7cb4fe562903aa56abe64c97d0d84357b67f49 Mon Sep 17 00:00:00 2001 +From 41abb8ffe452643a16622e8e543f9b95ad8dc291 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Mon, 6 Jul 2020 17:56:40 -0500 Subject: [PATCH] ntdll: Implement NtPulseEvent(). @@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Implement NtPulseEvent(). 3 files changed, 29 insertions(+) diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c -index ff0210f3cd4..3a47b5aa39e 100644 +index 6ebc09d87bf..31f268c69d5 100644 --- a/dlls/ntdll/unix/esync.c +++ b/dlls/ntdll/unix/esync.c -@@ -600,6 +600,31 @@ NTSTATUS esync_reset_event( HANDLE handle ) +@@ -599,6 +599,31 @@ NTSTATUS esync_reset_event( HANDLE handle ) return STATUS_SUCCESS; } @@ -46,22 +46,22 @@ index ff0210f3cd4..3a47b5aa39e 100644 { struct esync *obj; diff --git a/dlls/ntdll/unix/esync.h b/dlls/ntdll/unix/esync.h -index 18788fa273b..188304f3be7 100644 +index 61846238ab7..59f8809fc1a 100644 --- a/dlls/ntdll/unix/esync.h +++ b/dlls/ntdll/unix/esync.h @@ -33,6 +33,7 @@ extern NTSTATUS esync_create_event( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN initial ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr, EVENT_TYPE type, BOOLEAN initial ); extern NTSTATUS esync_open_event( HANDLE *handle, ACCESS_MASK access, - const OBJECT_ATTRIBUTES *attr ) DECLSPEC_HIDDEN; -+extern NTSTATUS esync_pulse_event( HANDLE handle ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_query_event( HANDLE handle, void *info, ULONG *ret_len ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_reset_event( HANDLE handle ) DECLSPEC_HIDDEN; - extern NTSTATUS esync_set_event( HANDLE handle ) DECLSPEC_HIDDEN; + const OBJECT_ATTRIBUTES *attr ); ++extern NTSTATUS esync_pulse_event( HANDLE handle ); + extern NTSTATUS esync_query_event( HANDLE handle, void *info, ULONG *ret_len ); + extern NTSTATUS esync_reset_event( HANDLE handle ); + extern NTSTATUS esync_set_event( HANDLE handle ); diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c -index 4c745b3b72e..4025a7a3a2f 100644 +index 5d25f086d5d..3a9fc76c2e4 100644 --- a/dlls/ntdll/unix/sync.c +++ b/dlls/ntdll/unix/sync.c -@@ -509,6 +509,9 @@ NTSTATUS WINAPI NtPulseEvent( HANDLE handle, LONG *prev_state ) +@@ -508,6 +508,9 @@ NTSTATUS WINAPI NtPulseEvent( HANDLE handle, LONG *prev_state ) { unsigned int ret; @@ -72,5 +72,5 @@ index 4c745b3b72e..4025a7a3a2f 100644 { req->handle = wine_server_obj_handle( handle ); -- -2.38.1 +2.42.0 diff --git a/patches/inseng-Implementation/0001-inseng-Implement-CIF-reader-and-download-functions.patch b/patches/inseng-Implementation/0001-inseng-Implement-CIF-reader-and-download-functions.patch index 242fc5b0..81226106 100644 --- a/patches/inseng-Implementation/0001-inseng-Implement-CIF-reader-and-download-functions.patch +++ b/patches/inseng-Implementation/0001-inseng-Implement-CIF-reader-and-download-functions.patch @@ -1,4 +1,4 @@ -From f76d5c65c07a184d56a9be4e8f77fa92886bb309 Mon Sep 17 00:00:00 2001 +From b2b7c4c294cc7ea290250c419720899d457f63ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 5 Sep 2016 15:31:29 +0200 Subject: [PATCH] inseng: Implement CIF reader and download functions. @@ -2247,7 +2247,7 @@ index 82c0b4d5fe1..7ae46fad3a7 100644 +@ stdcall GetICifRWFileFromFile(ptr str) @ stub PurgeDownloadDirectory diff --git a/dlls/inseng/inseng_main.c b/dlls/inseng/inseng_main.c -index f7ce3f173c2..81eb1ec4f13 100644 +index f7ce3f173c2..ad6fe6b4de8 100644 --- a/dlls/inseng/inseng_main.c +++ b/dlls/inseng/inseng_main.c @@ -2,6 +2,7 @@ @@ -3449,7 +3449,7 @@ index f7ce3f173c2..81eb1ec4f13 100644 IInstallEngine2_Release(&engine->IInstallEngine2_iface); diff --git a/dlls/inseng/inseng_private.h b/dlls/inseng/inseng_private.h new file mode 100644 -index 00000000000..55d3899808a +index 00000000000..49d4241d65e --- /dev/null +++ b/dlls/inseng/inseng_private.h @@ -0,0 +1,79 @@ @@ -3514,24 +3514,24 @@ index 00000000000..55d3899808a +struct inf_section; +struct inf_file; + -+HRESULT inf_load(const char *path, struct inf_file **inf_file) DECLSPEC_HIDDEN; -+void inf_free(struct inf_file *inf) DECLSPEC_HIDDEN; ++HRESULT inf_load(const char *path, struct inf_file **inf_file); ++void inf_free(struct inf_file *inf); + -+BOOL inf_next_section(struct inf_file *inf, struct inf_section **sec) DECLSPEC_HIDDEN; -+struct inf_section *inf_get_section(struct inf_file *inf, const char *name) DECLSPEC_HIDDEN; -+char *inf_section_get_name(struct inf_section *section) DECLSPEC_HIDDEN; -+BOOL inf_section_next_value(struct inf_section *sec, struct inf_value **value) DECLSPEC_HIDDEN; ++BOOL inf_next_section(struct inf_file *inf, struct inf_section **sec); ++struct inf_section *inf_get_section(struct inf_file *inf, const char *name); ++char *inf_section_get_name(struct inf_section *section); ++BOOL inf_section_next_value(struct inf_section *sec, struct inf_value **value); + -+struct inf_value *inf_get_value(struct inf_section *sec, const char *key) DECLSPEC_HIDDEN; -+char *inf_value_get_key(struct inf_value *value) DECLSPEC_HIDDEN; -+char *inf_value_get_value(struct inf_value *value) DECLSPEC_HIDDEN; ++struct inf_value *inf_get_value(struct inf_section *sec, const char *key); ++char *inf_value_get_key(struct inf_value *value); ++char *inf_value_get_value(struct inf_value *value); + -+char *trim(char *str, char **last_chr, BOOL strip_quotes) DECLSPEC_HIDDEN; ++char *trim(char *str, char **last_chr, BOOL strip_quotes); + -+void component_set_actual_download_size(ICifComponent *iface, DWORD size) DECLSPEC_HIDDEN; -+void component_set_downloaded(ICifComponent *iface, BOOL value) DECLSPEC_HIDDEN; -+void component_set_installed(ICifComponent *iface, BOOL value) DECLSPEC_HIDDEN; -+ char *component_get_id(ICifComponent *iface) DECLSPEC_HIDDEN; ++void component_set_actual_download_size(ICifComponent *iface, DWORD size); ++void component_set_downloaded(ICifComponent *iface, BOOL value); ++void component_set_installed(ICifComponent *iface, BOOL value); ++char *component_get_id(ICifComponent *iface); diff --git a/include/inseng.idl b/include/inseng.idl index 8a3f4c4d270..82927418a99 100644 --- a/include/inseng.idl diff --git a/patches/user32-rawinput-mouse/0001-winex11.drv-Split-XInput2-thread-initialization.patch b/patches/user32-rawinput-mouse/0001-winex11.drv-Split-XInput2-thread-initialization.patch index 09fe11fc..b5872c27 100644 --- a/patches/user32-rawinput-mouse/0001-winex11.drv-Split-XInput2-thread-initialization.patch +++ b/patches/user32-rawinput-mouse/0001-winex11.drv-Split-XInput2-thread-initialization.patch @@ -1,4 +1,4 @@ -From e25ad836af126afcff4cdc12dbebb410722806dd Mon Sep 17 00:00:00 2001 +From 1061a45af693c2cb526a3d83209397b483346b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Fri, 17 Jan 2020 16:33:11 +0100 Subject: [PATCH] winex11.drv: Split XInput2 thread initialization. @@ -6,12 +6,12 @@ Subject: [PATCH] winex11.drv: Split XInput2 thread initialization. And rename the library and function loader to x11drv_xinput_load. --- dlls/winex11.drv/mouse.c | 46 +++++++++++++++++++++++----------- - dlls/winex11.drv/x11drv.h | 3 ++- + dlls/winex11.drv/x11drv.h | 4 +-- dlls/winex11.drv/x11drv_main.c | 4 ++- - 3 files changed, 36 insertions(+), 17 deletions(-) + 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c -index 3ddcf609549..a28746b9aef 100644 +index 612fff9995c..911e93d8de1 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c @@ -253,6 +253,32 @@ static void update_relative_valuators(XIAnyClassInfo **valuators, int n_valuator @@ -80,7 +80,7 @@ index 3ddcf609549..a28746b9aef 100644 data->xi2_state = xi_disabled; mask.mask = NULL; -@@ -1753,9 +1769,9 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) +@@ -1755,9 +1771,9 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) /*********************************************************************** @@ -93,21 +93,22 @@ index 3ddcf609549..a28746b9aef 100644 #if defined(SONAME_LIBXI) && defined(HAVE_X11_EXTENSIONS_XINPUT2_H) int event, error; diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h -index 9ee6498a02e..16fc2843880 100644 +index 2917579927c..050008d2bfb 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h -@@ -261,7 +261,8 @@ extern void X11DRV_ThreadDetach(void) DECLSPEC_HIDDEN; +@@ -260,8 +260,8 @@ extern void X11DRV_ThreadDetach(void); + /* X11 driver internal functions */ - extern void X11DRV_Xcursor_Init(void) DECLSPEC_HIDDEN; --extern void X11DRV_XInput2_Init(void) DECLSPEC_HIDDEN; -+extern void x11drv_xinput_load(void) DECLSPEC_HIDDEN; -+extern void x11drv_xinput_init(void) DECLSPEC_HIDDEN; +-extern void X11DRV_Xcursor_Init(void); +-extern void X11DRV_XInput2_Init(void); ++extern void x11drv_xinput_load(void); ++extern void x11drv_xinput_init(void); extern DWORD copy_image_bits( BITMAPINFO *info, BOOL is_r8g8b8, XImage *image, const struct gdi_image_bits *src_bits, struct gdi_image_bits *dst_bits, diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c -index c4d537d6ada..fc341c32f77 100644 +index 32a20e0e4f2..573a41bbe96 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -700,7 +700,7 @@ static NTSTATUS x11drv_init( void *arg ) @@ -129,5 +130,5 @@ index c4d537d6ada..fc341c32f77 100644 } -- -2.40.1 +2.42.0 diff --git a/patches/user32-rawinput-mouse/0002-winex11.drv-Support-XInput2-events-for-individual-wi.patch b/patches/user32-rawinput-mouse/0002-winex11.drv-Support-XInput2-events-for-individual-wi.patch index 09da63cf..dff00828 100644 --- a/patches/user32-rawinput-mouse/0002-winex11.drv-Support-XInput2-events-for-individual-wi.patch +++ b/patches/user32-rawinput-mouse/0002-winex11.drv-Support-XInput2-events-for-individual-wi.patch @@ -1,4 +1,4 @@ -From 5c869c2c59231cd9028d35511259618339c1a8fe Mon Sep 17 00:00:00 2001 +From 3c844a24ee63c1fac2db8a1f99ea11db4a118213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Thu, 23 Jan 2020 11:00:19 +0100 Subject: [PATCH] winex11.drv: Support XInput2 events for individual windows. @@ -27,7 +27,7 @@ index 687c0cf5a4c..01bd6a1b74a 100644 X11DRV_init_desktop( win, width, height ); diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c -index c3c8d9a4070..f6d9041ca65 100644 +index 97bec34b0ea..d2de3c53d79 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -235,6 +235,13 @@ static Bool filter_event( Display *display, XEvent *event, char *arg ) @@ -45,7 +45,7 @@ index c3c8d9a4070..f6d9041ca65 100644 case MotionNotify: case EnterNotify: diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c -index a28746b9aef..f11e73f436b 100644 +index 911e93d8de1..820126a2c48 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c @@ -280,20 +280,32 @@ void x11drv_xinput_init(void) @@ -186,7 +186,7 @@ index a28746b9aef..f11e73f436b 100644 /*********************************************************************** diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c -index ed3728773af..f043e64047e 100644 +index 53982bb8c3b..c2d7e850656 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -362,6 +362,7 @@ static void sync_window_style( struct x11drv_win_data *data ) @@ -197,7 +197,7 @@ index ed3728773af..f043e64047e 100644 } } -@@ -1665,6 +1666,7 @@ static void create_whole_window( struct x11drv_win_data *data ) +@@ -1680,6 +1681,7 @@ static void create_whole_window( struct x11drv_win_data *data ) data->vis.visual, mask, &attr ); if (!data->whole_window) goto done; @@ -205,7 +205,7 @@ index ed3728773af..f043e64047e 100644 set_initial_wm_hints( data->display, data->whole_window ); set_wm_hints( data ); -@@ -2003,6 +2005,7 @@ BOOL X11DRV_CreateWindow( HWND hwnd ) +@@ -2018,6 +2020,7 @@ BOOL X11DRV_CreateWindow( HWND hwnd ) data->clip_window = XCreateWindow( data->display, root_window, 0, 0, 1, 1, 0, 0, InputOnly, default_visual.visual, CWOverrideRedirect | CWEventMask, &attr ); @@ -214,19 +214,19 @@ index ed3728773af..f043e64047e 100644 NtUserSetProp( hwnd, clip_window_prop, (HANDLE)data->clip_window ); X11DRV_DisplayDevices_RegisterEventHandlers(); diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h -index 16fc2843880..e8cc85a15bd 100644 +index 050008d2bfb..f087eccd35b 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h -@@ -263,6 +263,8 @@ extern void X11DRV_ThreadDetach(void) DECLSPEC_HIDDEN; - extern void X11DRV_Xcursor_Init(void) DECLSPEC_HIDDEN; - extern void x11drv_xinput_load(void) DECLSPEC_HIDDEN; - extern void x11drv_xinput_init(void) DECLSPEC_HIDDEN; -+extern void x11drv_xinput_enable( Display *display, Window window, long event_mask ) DECLSPEC_HIDDEN; -+extern void x11drv_xinput_disable( Display *display, Window window, long event_mask ) DECLSPEC_HIDDEN; +@@ -262,6 +262,8 @@ extern void X11DRV_ThreadDetach(void); + + extern void x11drv_xinput_load(void); + extern void x11drv_xinput_init(void); ++extern void x11drv_xinput_enable( Display *display, Window window, long event_mask ); ++extern void x11drv_xinput_disable( Display *display, Window window, long event_mask ); extern DWORD copy_image_bits( BITMAPINFO *info, BOOL is_r8g8b8, XImage *image, const struct gdi_image_bits *src_bits, struct gdi_image_bits *dst_bits, -@@ -377,6 +379,14 @@ struct x11drv_escape_flush_gl_drawable +@@ -376,6 +378,14 @@ struct x11drv_escape_flush_gl_drawable * X11 USER driver */ @@ -251,5 +251,5 @@ index 16fc2843880..e8cc85a15bd 100644 int xi2_device_count; XIValuatorClassInfo x_valuator; -- -2.40.1 +2.42.0 diff --git a/patches/user32-rawinput-mouse/0004-winex11.drv-Keep-track-of-pointer-and-device-button-.patch b/patches/user32-rawinput-mouse/0004-winex11.drv-Keep-track-of-pointer-and-device-button-.patch index b6d5e7de..637ede4e 100644 --- a/patches/user32-rawinput-mouse/0004-winex11.drv-Keep-track-of-pointer-and-device-button-.patch +++ b/patches/user32-rawinput-mouse/0004-winex11.drv-Keep-track-of-pointer-and-device-button-.patch @@ -1,4 +1,4 @@ -From 1d38a722177d02eb836ff8f9aa9857d00e6a7ab8 Mon Sep 17 00:00:00 2001 +From 7fcbbbd139dc8504ca084e468afc436cfaee6ef1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Thu, 19 Dec 2019 22:34:44 +0100 Subject: [PATCH] winex11.drv: Keep track of pointer and device button @@ -16,10 +16,10 @@ Original patch by Andrew Eikum . 4 files changed, 106 insertions(+), 8 deletions(-) diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c -index b240b228ff0..b54ca795954 100644 +index 5c7f6c37276..674d8d6db58 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c -@@ -1809,13 +1809,24 @@ BOOL X11DRV_MappingNotify( HWND dummy, XEvent *event ) +@@ -1848,13 +1848,24 @@ BOOL X11DRV_MappingNotify( HWND dummy, XEvent *event ) { HWND hwnd; @@ -51,7 +51,7 @@ index b240b228ff0..b54ca795954 100644 } diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c -index ff91aecb67f..33f6ac24af8 100644 +index ab89f32a8a2..75d961423ba 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c @@ -30,6 +30,9 @@ @@ -150,7 +150,7 @@ index ff91aecb67f..33f6ac24af8 100644 #ifdef HAVE_X11_EXTENSIONS_XINPUT2_H /*********************************************************************** * update_relative_valuators -@@ -1675,6 +1750,8 @@ static BOOL X11DRV_DeviceChanged( XGenericEventCookie *xev ) +@@ -1677,6 +1752,8 @@ static BOOL X11DRV_DeviceChanged( XGenericEventCookie *xev ) if (event->reason != XISlaveSwitch) return FALSE; update_relative_valuators( event->classes, event->num_classes ); @@ -159,7 +159,7 @@ index ff91aecb67f..33f6ac24af8 100644 return TRUE; } -@@ -1762,13 +1839,12 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) +@@ -1764,13 +1841,12 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) #endif /* HAVE_X11_EXTENSIONS_XINPUT2_H */ @@ -174,7 +174,7 @@ index ff91aecb67f..33f6ac24af8 100644 int event, error; void *libxi_handle = dlopen( SONAME_LIBXI, RTLD_NOW ); -@@ -1784,11 +1860,20 @@ void x11drv_xinput_load(void) +@@ -1786,11 +1862,20 @@ void x11drv_xinput_load(void) return; \ } @@ -196,19 +196,19 @@ index ff91aecb67f..33f6ac24af8 100644 xinput2_available = XQueryExtension( gdi_display, "XInputExtension", &xinput2_opcode, &event, &error ); diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h -index fc3231ed40d..8bbac23f88e 100644 +index 4d94f042ee1..7ad685dfafb 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h -@@ -691,6 +691,7 @@ extern void retry_grab_clipping_window(void) DECLSPEC_HIDDEN; - extern void ungrab_clipping_window(void) DECLSPEC_HIDDEN; - extern void move_resize_window( HWND hwnd, int dir ) DECLSPEC_HIDDEN; - extern void X11DRV_InitKeyboard( Display *display ) DECLSPEC_HIDDEN; -+extern void X11DRV_InitMouse( Display *display ) DECLSPEC_HIDDEN; - extern BOOL X11DRV_ProcessEvents( DWORD mask ) DECLSPEC_HIDDEN; - extern HWND *build_hwnd_list(void) DECLSPEC_HIDDEN; +@@ -692,6 +692,7 @@ extern void retry_grab_clipping_window(void); + extern void ungrab_clipping_window(void); + extern void move_resize_window( HWND hwnd, int dir ); + extern void X11DRV_InitKeyboard( Display *display ); ++extern void X11DRV_InitMouse( Display *display ); + extern BOOL X11DRV_ProcessEvents( DWORD mask ); + extern HWND *build_hwnd_list(void); diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c -index fc341c32f77..b0e306e3ac8 100644 +index 573a41bbe96..0eb5a2e8d45 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -704,6 +704,7 @@ static NTSTATUS x11drv_init( void *arg ) @@ -220,5 +220,5 @@ index fc341c32f77..b0e306e3ac8 100644 init_user_driver(); -- -2.40.1 +2.42.0 diff --git a/patches/winemac.drv-no-flicker-patch/0001-winemac.drv-No-Flicker-patch.patch b/patches/winemac.drv-no-flicker-patch/0001-winemac.drv-No-Flicker-patch.patch index 0593e412..e67b786d 100644 --- a/patches/winemac.drv-no-flicker-patch/0001-winemac.drv-No-Flicker-patch.patch +++ b/patches/winemac.drv-no-flicker-patch/0001-winemac.drv-No-Flicker-patch.patch @@ -1,4 +1,4 @@ -From b6ee6f06b0184d129ba9ee9fdac09852d0730ecd Mon Sep 17 00:00:00 2001 +From 2bb3073bab5575a0a346ed25cde1a52da6f70a36 Mon Sep 17 00:00:00 2001 From: Ken Thomases Date: Tue, 22 Jun 2021 07:56:43 +1000 Subject: [PATCH] winemac.drv: No Flicker patch @@ -10,22 +10,22 @@ Subject: [PATCH] winemac.drv: No Flicker patch 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/dlls/winemac.drv/macdrv.h b/dlls/winemac.drv/macdrv.h -index 7cb1665a8fc..879b7102c9e 100644 +index a1cdcc76ebc..14db3930474 100644 --- a/dlls/winemac.drv/macdrv.h +++ b/dlls/winemac.drv/macdrv.h -@@ -41,6 +41,7 @@ - extern BOOL allow_set_gamma DECLSPEC_HIDDEN; - extern BOOL allow_software_rendering DECLSPEC_HIDDEN; - extern BOOL disable_window_decorations DECLSPEC_HIDDEN; -+extern BOOL force_backing_store DECLSPEC_HIDDEN; +@@ -44,6 +44,7 @@ + extern BOOL allow_set_gamma; + extern BOOL allow_software_rendering; + extern BOOL disable_window_decorations; ++extern BOOL force_backing_store; - extern const char* debugstr_cf(CFTypeRef t) DECLSPEC_HIDDEN; + extern const char* debugstr_cf(CFTypeRef t); diff --git a/dlls/winemac.drv/macdrv_main.c b/dlls/winemac.drv/macdrv_main.c -index 4b79c69a6f8..514c00af499 100644 +index b40bf02f267..bc630305175 100644 --- a/dlls/winemac.drv/macdrv_main.c +++ b/dlls/winemac.drv/macdrv_main.c -@@ -66,6 +66,7 @@ int use_precise_scrolling = TRUE; +@@ -60,6 +60,7 @@ int use_precise_scrolling = TRUE; int gl_surface_mode = GL_SURFACE_IN_FRONT_OPAQUE; int retina_enabled = FALSE; int enable_app_nap = FALSE; @@ -33,7 +33,7 @@ index 4b79c69a6f8..514c00af499 100644 CFDictionaryRef localized_strings; -@@ -384,6 +385,9 @@ static void setup_options(void) +@@ -378,6 +379,9 @@ static void setup_options(void) if (!get_config_key(hkey, appkey, "EnableAppNap", buffer, sizeof(buffer))) enable_app_nap = IS_OPTION_TRUE(buffer[0]); @@ -44,10 +44,10 @@ index 4b79c69a6f8..514c00af499 100644 processes in the prefix. */ if (!get_config_key(hkey, NULL, "RetinaMode", buffer, sizeof(buffer))) diff --git a/dlls/winemac.drv/opengl.c b/dlls/winemac.drv/opengl.c -index 63b24ee991d..b1c43e77f37 100644 +index f78454ed149..205c0816d44 100644 --- a/dlls/winemac.drv/opengl.c +++ b/dlls/winemac.drv/opengl.c -@@ -1452,7 +1452,7 @@ static BOOL create_context(struct wgl_context *context, CGLContextObj share, uns +@@ -1451,7 +1451,7 @@ static BOOL create_context(struct wgl_context *context, CGLContextObj share, uns attribs[n++] = pf->samples; } @@ -57,5 +57,5 @@ index 63b24ee991d..b1c43e77f37 100644 if (core) -- -2.35.1 +2.42.0 diff --git a/patches/winex11-CandidateWindowPos/0001-winex11.drv-Update-a-candidate-window-s-position-wit.patch b/patches/winex11-CandidateWindowPos/0001-winex11.drv-Update-a-candidate-window-s-position-wit.patch index 453072ab..3bc63b35 100644 --- a/patches/winex11-CandidateWindowPos/0001-winex11.drv-Update-a-candidate-window-s-position-wit.patch +++ b/patches/winex11-CandidateWindowPos/0001-winex11.drv-Update-a-candidate-window-s-position-wit.patch @@ -1,4 +1,4 @@ -From 7149a4637b34e291dd5a9003b6f4a421d6c1781b Mon Sep 17 00:00:00 2001 +From d72fa6e8e3d4188d3b6b6da92cad5a785cc2c839 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Tue, 23 Sep 2014 23:22:17 +0800 Subject: [PATCH] winex11.drv: Update a candidate window's position with @@ -26,7 +26,7 @@ received a lot of help from Sebastian Lackner. 6 files changed, 85 insertions(+) diff --git a/dlls/win32u/driver.c b/dlls/win32u/driver.c -index ed2e0973d39..2965f5f0090 100644 +index e6a24d1a46c..672b6571671 100644 --- a/dlls/win32u/driver.c +++ b/dlls/win32u/driver.c @@ -923,6 +923,11 @@ static struct opengl_funcs *nulldrv_wine_get_wgl_driver( UINT version ) @@ -58,7 +58,7 @@ index ed2e0973d39..2965f5f0090 100644 #undef SET_USER_FUNC diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c -index 1f9e48423fc..9eba12c37bd 100644 +index 3e6e440de93..ac19b5146a9 100644 --- a/dlls/win32u/input.c +++ b/dlls/win32u/input.c @@ -2330,6 +2330,8 @@ BOOL set_caret_pos( int x, int y ) @@ -92,15 +92,15 @@ index c3d54da1d4d..8e277ba0003 100644 }; diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h -index 9ee6498a02e..ef88221202f 100644 +index 2917579927c..8e8ca22a2db 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -256,6 +256,7 @@ extern void X11DRV_WindowPosChanged( HWND hwnd, HWND insert_after, UINT swp_flag - struct window_surface *surface ) DECLSPEC_HIDDEN; + struct window_surface *surface ); extern BOOL X11DRV_SystemParametersInfo( UINT action, UINT int_param, void *ptr_param, - UINT flags ) DECLSPEC_HIDDEN; -+extern void X11DRV_UpdateCandidatePos( HWND hwnd, const RECT *caret_rect ) DECLSPEC_HIDDEN; - extern void X11DRV_ThreadDetach(void) DECLSPEC_HIDDEN; + UINT flags ); ++extern void X11DRV_UpdateCandidatePos( HWND hwnd, const RECT *caret_rect ); + extern void X11DRV_ThreadDetach(void); /* X11 driver internal functions */ diff --git a/dlls/winex11.drv/xim.c b/dlls/winex11.drv/xim.c @@ -199,7 +199,7 @@ index 209d63f0402..32e5fef58db 100644 } diff --git a/include/wine/gdi_driver.h b/include/wine/gdi_driver.h -index c4e859f21e5..fba67f9873e 100644 +index aa59a256482..1c0abebed3b 100644 --- a/include/wine/gdi_driver.h +++ b/include/wine/gdi_driver.h @@ -343,6 +343,8 @@ struct user_driver_funcs @@ -212,5 +212,5 @@ index c4e859f21e5..fba67f9873e 100644 void (*pThreadDetach)(void); }; -- -2.40.1 +2.42.0 diff --git a/patches/winex11-Fixed-scancodes/0003-winex11-Write-supported-keyboard-layout-list-in-regi.patch b/patches/winex11-Fixed-scancodes/0003-winex11-Write-supported-keyboard-layout-list-in-regi.patch index f631773c..87c3a97e 100644 --- a/patches/winex11-Fixed-scancodes/0003-winex11-Write-supported-keyboard-layout-list-in-regi.patch +++ b/patches/winex11-Fixed-scancodes/0003-winex11-Write-supported-keyboard-layout-list-in-regi.patch @@ -1,16 +1,21 @@ -From 89800b44c37c6b76e1cdc817c3423638f4dd9ac8 Mon Sep 17 00:00:00 2001 -From: RĂ©mi Bernon +From 3d27835e97b472ed46ffbfd48bc1e16a30d1ff61 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Fri, 6 Jan 2023 08:09:11 +0100 -Subject: winex11: Write supported keyboard layout list in registry. +Subject: [PATCH] winex11: Write supported keyboard layout list in registry. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=30984 Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45605 +--- + dlls/winex11.drv/keyboard.c | 21 +++++++++++++++++++++ + dlls/winex11.drv/x11drv.h | 4 ++++ + dlls/winex11.drv/x11drv_main.c | 17 +++++++++++++++++ + 3 files changed, 42 insertions(+) diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c -index 616728be621..ccdea98d1c2 100644 +index 5c7f6c37276..1846bd923a5 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c -@@ -1086,6 +1086,27 @@ static const WORD xfree86_vendor_key_vkey[256] = +@@ -1084,6 +1084,27 @@ static const WORD xfree86_vendor_key_vkey[256] = 0, 0, 0, 0, 0, 0, 0, 0 /* 1008FFF8 */ }; @@ -39,22 +44,22 @@ index 616728be621..ccdea98d1c2 100644 /* kbd_section must be held */ static WORD EVENT_event_to_vkey( XIC xic, XKeyEvent *e) diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h -index c6328cf3fde..da8d9511a4c 100644 +index 2917579927c..da501ad4618 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h -@@ -706,6 +706,10 @@ extern BOOL xinerama_get_fullscreen_monitors( const RECT *rect, long *indices ) - extern void xinerama_init( unsigned int width, unsigned int height ) DECLSPEC_HIDDEN; - extern void init_recursive_mutex( pthread_mutex_t *mutex ) DECLSPEC_HIDDEN; +@@ -701,6 +701,10 @@ extern BOOL xinerama_get_fullscreen_monitors( const RECT *rect, long *indices ); + extern void xinerama_init( unsigned int width, unsigned int height ); + extern void init_recursive_mutex( pthread_mutex_t *mutex ); +/* keyboard.c */ + -+extern WCHAR *x11drv_get_keyboard_layout_list( DWORD *size ) DECLSPEC_HIDDEN; ++extern WCHAR *x11drv_get_keyboard_layout_list( DWORD *size ); + #define DEPTH_COUNT 3 - extern const unsigned int *depths DECLSPEC_HIDDEN; + extern const unsigned int *depths; diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c -index db957a80eb3..f3460141c33 100644 +index 70212a067b0..73b2237778b 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -446,6 +446,19 @@ static HKEY create_hkcu_key( const char *name ) @@ -77,7 +82,7 @@ index db957a80eb3..f3460141c33 100644 ULONG query_reg_value( HKEY hkey, const WCHAR *name, KEY_VALUE_PARTIAL_INFORMATION *info, ULONG size ) { -@@ -564,6 +577,10 @@ static void setup_options(void) +@@ -561,6 +574,10 @@ static void setup_options(void) if (!get_config_key( hkey, appkey, "GrabFullscreen", buffer, sizeof(buffer) )) grab_fullscreen = IS_OPTION_TRUE( buffer[0] ); @@ -88,3 +93,6 @@ index db957a80eb3..f3460141c33 100644 if (!get_config_key( hkey, appkey, "ScreenDepth", buffer, sizeof(buffer) )) default_visual.depth = wcstol( buffer, NULL, 0 ); +-- +2.42.0 + diff --git a/patches/winex11-Fixed-scancodes/0005-winex11-Use-the-user-configured-keyboard-layout-if-a.patch b/patches/winex11-Fixed-scancodes/0005-winex11-Use-the-user-configured-keyboard-layout-if-a.patch index d26ff39f..ddeeb8f0 100644 --- a/patches/winex11-Fixed-scancodes/0005-winex11-Use-the-user-configured-keyboard-layout-if-a.patch +++ b/patches/winex11-Fixed-scancodes/0005-winex11-Use-the-user-configured-keyboard-layout-if-a.patch @@ -1,4 +1,4 @@ -From 4ae28b915b829e0a0e1cd5afa9d91cb2c1f7a149 Mon Sep 17 00:00:00 2001 +From d277822336764e01d8edfef93332738dfbd678a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Fri, 6 Jan 2023 08:09:11 +0100 Subject: [PATCH] winex11: Use the user configured keyboard layout if any. @@ -12,10 +12,10 @@ Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45605 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c -index a9f172db9df..087026f7d5f 100644 +index 1846bd923a5..fe87ae2235d 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c -@@ -931,7 +931,6 @@ static const struct { +@@ -929,7 +929,6 @@ static const struct { {0, NULL, NULL, NULL, NULL} /* sentinel */ }; @@ -23,7 +23,7 @@ index a9f172db9df..087026f7d5f 100644 /* maybe more of these scancodes should be extended? */ /* extended must be set for ALT_R, CTRL_R, -@@ -1086,6 +1085,26 @@ static const WORD xfree86_vendor_key_vkey[256] = +@@ -1084,6 +1083,26 @@ static const WORD xfree86_vendor_key_vkey[256] = 0, 0, 0, 0, 0, 0, 0, 0 /* 1008FFF8 */ }; @@ -50,7 +50,7 @@ index a9f172db9df..087026f7d5f 100644 WCHAR *x11drv_get_keyboard_layout_list( DWORD *length ) { WCHAR *tmp, *layouts = calloc( 1, sizeof(WCHAR) ); -@@ -1432,11 +1451,11 @@ BOOL X11DRV_KeyEvent( HWND hwnd, XEvent *xev ) +@@ -1468,11 +1487,11 @@ BOOL X11DRV_KeyEvent( HWND hwnd, XEvent *xev ) * whichever matches most closely. * kbd_section must be held. */ @@ -64,7 +64,7 @@ index a9f172db9df..087026f7d5f 100644 KeySym keysym = 0; const char (*lkey)[MAIN_LEN][4]; unsigned max_seq = 0; -@@ -1534,6 +1553,7 @@ X11DRV_KEYBOARD_DetectLayout( Display *display ) +@@ -1570,6 +1589,7 @@ X11DRV_KEYBOARD_DetectLayout( Display *display ) main_key_tab[kbd_layout].comment); TRACE("detected layout is \"%s\"\n", main_key_tab[kbd_layout].comment); @@ -72,7 +72,7 @@ index a9f172db9df..087026f7d5f 100644 } -@@ -1569,7 +1589,7 @@ void X11DRV_InitKeyboard( Display *display ) +@@ -1605,7 +1625,7 @@ void X11DRV_InitKeyboard( Display *display ) { 0x41, 0x5a }, /* VK_A - VK_Z */ { 0, 0 } }; @@ -81,7 +81,7 @@ index a9f172db9df..087026f7d5f 100644 pthread_mutex_lock( &kbd_mutex ); XDisplayKeycodes(display, &min_keycode, &max_keycode); -@@ -1601,8 +1621,9 @@ void X11DRV_InitKeyboard( Display *display ) +@@ -1637,8 +1657,9 @@ void X11DRV_InitKeyboard( Display *display ) } XFreeModifiermap(mmp); @@ -94,27 +94,27 @@ index a9f172db9df..087026f7d5f 100644 syms = (keysyms_per_keycode > 4) ? 4 : keysyms_per_keycode; diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h -index 8798a49e506..80dbbee3727 100644 +index da501ad4618..9549d427583 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h -@@ -456,6 +456,7 @@ extern BOOL use_primary_selection DECLSPEC_HIDDEN; - extern BOOL use_system_cursors DECLSPEC_HIDDEN; - extern BOOL show_systray DECLSPEC_HIDDEN; - extern BOOL grab_fullscreen DECLSPEC_HIDDEN; -+extern int keyboard_layout DECLSPEC_HIDDEN; - extern BOOL usexcomposite DECLSPEC_HIDDEN; - extern BOOL managed_mode DECLSPEC_HIDDEN; - extern BOOL decorated_mode DECLSPEC_HIDDEN; -@@ -716,6 +717,7 @@ extern void init_recursive_mutex( pthread_mutex_t *mutex ) DECLSPEC_HIDDEN; +@@ -444,6 +444,7 @@ extern BOOL use_primary_selection; + extern BOOL use_system_cursors; + extern BOOL show_systray; + extern BOOL grab_fullscreen; ++extern int keyboard_layout; + extern BOOL usexcomposite; + extern BOOL managed_mode; + extern BOOL decorated_mode; +@@ -703,6 +704,7 @@ extern void init_recursive_mutex( pthread_mutex_t *mutex ); /* keyboard.c */ -+extern int x11drv_find_keyboard_layout( const WCHAR *layout ) DECLSPEC_HIDDEN; - extern WCHAR *x11drv_get_keyboard_layout_list( DWORD *size ) DECLSPEC_HIDDEN; ++extern int x11drv_find_keyboard_layout( const WCHAR *layout ); + extern WCHAR *x11drv_get_keyboard_layout_list( DWORD *size ); #define DEPTH_COUNT 3 diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c -index e752302b236..05fe0ad8955 100644 +index 73b2237778b..3ac9b24d941 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -75,6 +75,7 @@ BOOL use_primary_selection = FALSE; @@ -125,7 +125,7 @@ index e752302b236..05fe0ad8955 100644 BOOL managed_mode = TRUE; BOOL decorated_mode = TRUE; BOOL private_color_map = FALSE; -@@ -575,6 +576,9 @@ static void setup_options(void) +@@ -574,6 +575,9 @@ static void setup_options(void) if (!get_config_key( hkey, appkey, "GrabFullscreen", buffer, sizeof(buffer) )) grab_fullscreen = IS_OPTION_TRUE( buffer[0] ); @@ -136,5 +136,5 @@ index e752302b236..05fe0ad8955 100644 if (p) set_reg_string_value( hkey, "KeyboardLayoutList", p, len * sizeof(WCHAR) ); free( p ); -- -2.40.1 +2.42.0 diff --git a/patches/winex11-Fixed-scancodes/0008-winex11-Support-fixed-X11-keycode-to-scancode-conver.patch b/patches/winex11-Fixed-scancodes/0008-winex11-Support-fixed-X11-keycode-to-scancode-conver.patch index d47ec5ad..697902f3 100644 --- a/patches/winex11-Fixed-scancodes/0008-winex11-Support-fixed-X11-keycode-to-scancode-conver.patch +++ b/patches/winex11-Fixed-scancodes/0008-winex11-Support-fixed-X11-keycode-to-scancode-conver.patch @@ -1,4 +1,4 @@ -From ec9488b146cde690e9015cd1ec442471176c2751 Mon Sep 17 00:00:00 2001 +From 8eed5c775bd6138ba5acb838a37ca7579697f65c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Wed, 30 Nov 2022 18:46:00 +0100 Subject: [PATCH] winex11: Support fixed X11 keycode to scancode conversion. @@ -16,10 +16,10 @@ Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45605 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c -index 03d24edb44f..caccf34d947 100644 +index dbc1e1ea689..6a71da1a5d9 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c -@@ -66,6 +66,46 @@ static const unsigned int ControlMask = 1 << 2; +@@ -64,6 +64,46 @@ static const unsigned int ControlMask = 1 << 2; static int min_keycode, max_keycode, keysyms_per_keycode; static WORD keyc2vkey[256], keyc2scan[256]; @@ -66,7 +66,7 @@ index 03d24edb44f..caccf34d947 100644 static int NumLockMask, ScrollLockMask, AltGrMask; /* mask in the XKeyEvent state */ static pthread_mutex_t kbd_mutex = PTHREAD_MUTEX_INITIALIZER; -@@ -1701,7 +1741,7 @@ void X11DRV_InitKeyboard( Display *display ) +@@ -1737,7 +1777,7 @@ void X11DRV_InitKeyboard( Display *display ) } TRACE("keycode %u => vkey %04X\n", e2.keycode, vkey); keyc2vkey[e2.keycode] = vkey; @@ -75,7 +75,7 @@ index 03d24edb44f..caccf34d947 100644 if ((vkey & 0xff) && vkey_used[(vkey & 0xff)]) WARN("vkey %04X is being used by more than one keycode\n", vkey); vkey_used[(vkey & 0xff)] = 1; -@@ -1812,7 +1852,7 @@ void X11DRV_InitKeyboard( Display *display ) +@@ -1848,7 +1888,7 @@ void X11DRV_InitKeyboard( Display *display ) #undef VKEY_IF_NOT_USED /* If some keys still lack scancodes, assign some arbitrary ones to them now */ @@ -85,19 +85,19 @@ index 03d24edb44f..caccf34d947 100644 const char *ksname; keysym = XkbKeycodeToKeysym( display, keyc, 0, 0 ); diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h -index 80dbbee3727..260dd80de59 100644 +index 193e34037e3..367eb7b5f97 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h -@@ -457,6 +457,7 @@ extern BOOL use_system_cursors DECLSPEC_HIDDEN; - extern BOOL show_systray DECLSPEC_HIDDEN; - extern BOOL grab_fullscreen DECLSPEC_HIDDEN; - extern int keyboard_layout DECLSPEC_HIDDEN; -+extern BOOL keyboard_scancode_detect DECLSPEC_HIDDEN; - extern BOOL usexcomposite DECLSPEC_HIDDEN; - extern BOOL managed_mode DECLSPEC_HIDDEN; - extern BOOL decorated_mode DECLSPEC_HIDDEN; +@@ -445,6 +445,7 @@ extern BOOL use_system_cursors; + extern BOOL show_systray; + extern BOOL grab_fullscreen; + extern int keyboard_layout; ++extern BOOL keyboard_scancode_detect; + extern BOOL usexcomposite; + extern BOOL managed_mode; + extern BOOL decorated_mode; diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c -index 05fe0ad8955..802bbae7815 100644 +index 3ac9b24d941..60f624d4aec 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -76,6 +76,7 @@ BOOL use_system_cursors = TRUE; @@ -108,7 +108,7 @@ index 05fe0ad8955..802bbae7815 100644 BOOL managed_mode = TRUE; BOOL decorated_mode = TRUE; BOOL private_color_map = FALSE; -@@ -583,6 +584,9 @@ static void setup_options(void) +@@ -582,6 +583,9 @@ static void setup_options(void) if (p) set_reg_string_value( hkey, "KeyboardLayoutList", p, len * sizeof(WCHAR) ); free( p ); @@ -119,5 +119,5 @@ index 05fe0ad8955..802bbae7815 100644 default_visual.depth = wcstol( buffer, NULL, 0 ); -- -2.40.1 +2.42.0 diff --git a/patches/winex11-_NET_ACTIVE_WINDOW/0001-winex11.drv-Add-support-for-_NET_ACTIVE_WINDOW.patch b/patches/winex11-_NET_ACTIVE_WINDOW/0001-winex11.drv-Add-support-for-_NET_ACTIVE_WINDOW.patch index b75d537d..0b17e909 100644 --- a/patches/winex11-_NET_ACTIVE_WINDOW/0001-winex11.drv-Add-support-for-_NET_ACTIVE_WINDOW.patch +++ b/patches/winex11-_NET_ACTIVE_WINDOW/0001-winex11.drv-Add-support-for-_NET_ACTIVE_WINDOW.patch @@ -1,4 +1,4 @@ -From a4b3e6ebf11273f97e2fd1fedaeb264149a0685f Mon Sep 17 00:00:00 2001 +From 2ba1060e4e92ad1b77c1a183ab167912dc8b38d8 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Wed, 10 Feb 2016 15:09:29 +0800 Subject: [PATCH] winex11.drv: Add support for _NET_ACTIVE_WINDOW. (v2) @@ -49,10 +49,10 @@ index e6a24d1a46c..d5865eff545 100644 SET_USER_FUNC(SetDesktopWindow); SET_USER_FUNC(SetFocus); diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c -index 500d02ab26d..a836a381a26 100644 +index 3e6e440de93..1aec4073561 100644 --- a/dlls/win32u/input.c +++ b/dlls/win32u/input.c -@@ -1889,6 +1889,8 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) +@@ -1920,6 +1920,8 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus ) NtUserPostMessage( get_desktop_window(), WM_PARENTNOTIFY, WM_NCACTIVATE, (LPARAM)hwnd ); } @@ -85,10 +85,10 @@ index 97bec34b0ea..b5f05bd108f 100644 Foreground window, because in most cases the messages sent above must have already changed the foreground window, in which diff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c -index 813532eff53..fe40582dc89 100644 +index c3d54da1d4d..dfacff602f9 100644 --- a/dlls/winex11.drv/init.c +++ b/dlls/winex11.drv/init.c -@@ -420,6 +420,7 @@ static const struct user_driver_funcs x11drv_funcs = +@@ -417,6 +417,7 @@ static const struct user_driver_funcs x11drv_funcs = .pProcessEvents = X11DRV_ProcessEvents, .pReleaseDC = X11DRV_ReleaseDC, .pScrollDC = X11DRV_ScrollDC, @@ -156,18 +156,18 @@ index 53982bb8c3b..f6769a695d4 100644 * SetCapture (X11DRV.@) */ diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h -index b8a8592f7fa..eefbaaf1fec 100644 +index 2917579927c..81605a8a483 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -231,6 +231,7 @@ extern void X11DRV_GetDC( HDC hdc, HWND hwnd, HWND top, const RECT *win_rect, - const RECT *top_rect, DWORD flags ) DECLSPEC_HIDDEN; - extern void X11DRV_ReleaseDC( HWND hwnd, HDC hdc ) DECLSPEC_HIDDEN; - extern BOOL X11DRV_ScrollDC( HDC hdc, INT dx, INT dy, HRGN update ) DECLSPEC_HIDDEN; -+extern void X11DRV_SetActiveWindow( HWND hwnd ) DECLSPEC_HIDDEN; - extern void X11DRV_SetCapture( HWND hwnd, UINT flags ) DECLSPEC_HIDDEN; - extern void X11DRV_SetDesktopWindow( HWND hwnd ) DECLSPEC_HIDDEN; + const RECT *top_rect, DWORD flags ); + extern void X11DRV_ReleaseDC( HWND hwnd, HDC hdc ); + extern BOOL X11DRV_ScrollDC( HDC hdc, INT dx, INT dy, HRGN update ); ++extern void X11DRV_SetActiveWindow( HWND hwnd ); + extern void X11DRV_SetCapture( HWND hwnd, UINT flags ); + extern void X11DRV_SetDesktopWindow( HWND hwnd ); extern void X11DRV_SetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alpha, -@@ -382,6 +383,7 @@ struct x11drv_thread_data +@@ -381,6 +382,7 @@ struct x11drv_thread_data Display *display; XEvent *current_event; /* event currently being processed */ HWND grab_hwnd; /* window that currently grabs the mouse */ @@ -175,7 +175,7 @@ index b8a8592f7fa..eefbaaf1fec 100644 HWND last_focus; /* last window that had focus */ HWND keymapnotify_hwnd; /* window that should receive modifier release events */ XIM xim; /* input method */ -@@ -487,6 +489,7 @@ enum x11drv_atoms +@@ -486,6 +488,7 @@ enum x11drv_atoms XATOM__ICC_PROFILE, XATOM__KDE_NET_WM_STATE_SKIP_SWITCHER, XATOM__MOTIF_WM_HINTS, @@ -196,7 +196,7 @@ index 32a20e0e4f2..c12905f0ded 100644 "_NET_STARTUP_INFO", "_NET_SUPPORTED", diff --git a/include/wine/gdi_driver.h b/include/wine/gdi_driver.h -index c4e859f21e5..24df7ea0b25 100644 +index aa59a256482..7765c671bc4 100644 --- a/include/wine/gdi_driver.h +++ b/include/wine/gdi_driver.h @@ -320,6 +320,7 @@ struct user_driver_funcs diff --git a/staging/upstream-commit b/staging/upstream-commit index f5350670..9d8684b8 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -bc13bda5ee4edaafa7ba9472d41acbad50c42112 +fcddf19498fca9b51baea705f5748b998f4560b9