From 11f545447b76eeab1ceadbdf9a58ee3d07d281fb Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Fri, 12 Jun 2020 09:35:12 +1000 Subject: [PATCH] Rebase against 22970932d014f024fcf7f0f98b1a5384b1b1eb99. --- ...dll-Support-x86_64-syscall-emulation.patch | 35 ++++++++--------- patches/patchinstall.sh | 5 ++- ...ate-syscall-thunks-for-ntdll-exports.patch | 38 +++++++++---------- ...ice-Load-some-common-drivers-and-fix.patch | 18 ++++----- ...w-to-select-default-display-frequenc.patch | 32 ++++++++-------- ...e-client-side-file-descriptor-cache-.patch | 26 ++++++------- staging/upstream-commit | 2 +- 7 files changed, 80 insertions(+), 76 deletions(-) diff --git a/patches/ntdll-Syscall_Emulation/0001-ntdll-Support-x86_64-syscall-emulation.patch b/patches/ntdll-Syscall_Emulation/0001-ntdll-Support-x86_64-syscall-emulation.patch index f7c6526f..6aaf9caa 100644 --- a/patches/ntdll-Syscall_Emulation/0001-ntdll-Support-x86_64-syscall-emulation.patch +++ b/patches/ntdll-Syscall_Emulation/0001-ntdll-Support-x86_64-syscall-emulation.patch @@ -1,4 +1,4 @@ -From 7ac261609be678c827b32e36656a56d77e729fcc Mon Sep 17 00:00:00 2001 +From a660effad7b09d7333aa46f9bbef45eb4c1bed3d Mon Sep 17 00:00:00 2001 From: Paul Gofman Date: Mon, 30 Dec 2019 13:27:53 +0300 Subject: [PATCH] ntdll: Support x86_64 syscall emulation. @@ -13,13 +13,13 @@ is used for trapping syscalls. dlls/ntdll/thread.c | 8 ++- dlls/ntdll/unix/signal_x86_64.c | 105 ++++++++++++++++++++++++++++++++ dlls/ntdll/unix/thread.c | 8 ++- - dlls/ntdll/unix/unix_private.h | 5 +- + dlls/ntdll/unix/unix_private.h | 6 +- dlls/ntdll/unixlib.h | 3 +- tools/winebuild/spec32.c | 9 ++- - 7 files changed, 133 insertions(+), 6 deletions(-) + 7 files changed, 134 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac -index 5418d1aa7329..d82069e74574 100644 +index 5418d1aa732..d82069e7457 100644 --- a/configure.ac +++ b/configure.ac @@ -474,6 +474,7 @@ AC_CHECK_HEADERS(\ @@ -31,7 +31,7 @@ index 5418d1aa7329..d82069e74574 100644 linux/types.h \ linux/ucdrom.h \ diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c -index a14e3a12ae0c..a0411446e243 100644 +index a14e3a12ae0..a0411446e24 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -229,6 +229,12 @@ void __wine_syscall_dispatcher( void ) @@ -57,7 +57,7 @@ index a14e3a12ae0c..a0411446e243 100644 peb = teb->Peb; diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c -index 1d1b879310ee..c8a8d1d1d33d 100644 +index 1d1b879310e..c8a8d1d1d33 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c @@ -28,6 +28,7 @@ @@ -194,7 +194,7 @@ index 1d1b879310ee..c8a8d1d1d33d 100644 error: diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c -index e1da90222d38..91e1596ddcba 100644 +index e1da90222d3..91e1596ddcb 100644 --- a/dlls/ntdll/unix/thread.c +++ b/dlls/ntdll/unix/thread.c @@ -58,6 +58,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(seh); @@ -227,10 +227,10 @@ index e1da90222d38..91e1596ddcba 100644 teb = virtual_alloc_first_teb(); teb->WOW32Reserved = syscall_handler; diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h -index d06f366d3c6d..4e1bdbcc5094 100644 +index 75594832572..e42fa44f9a0 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h -@@ -108,7 +108,8 @@ extern void CDECL server_release_fd( HANDLE handle, int unix_fd ) DECLSPEC_HIDDE +@@ -112,7 +112,8 @@ extern void CDECL server_release_fd( HANDLE handle, int unix_fd ) DECLSPEC_HIDDE extern void CDECL server_init_process_done( void *relay ) DECLSPEC_HIDDEN; extern TEB * CDECL init_threading( int *nb_threads_ptr, struct ldt_copy **ldt_copy, SIZE_T *size, BOOL *suspend, unsigned int *cpus, BOOL *wow64, @@ -240,20 +240,21 @@ index d06f366d3c6d..4e1bdbcc5094 100644 extern void CDECL DECLSPEC_NORETURN exit_thread( int status ) DECLSPEC_HIDDEN; extern void CDECL DECLSPEC_NORETURN exit_process( int status ) DECLSPEC_HIDDEN; extern NTSTATUS CDECL get_thread_ldt_entry( HANDLE handle, void *data, ULONG len, ULONG *ret_len ) DECLSPEC_HIDDEN; -@@ -123,6 +124,8 @@ extern timeout_t server_start_time DECLSPEC_HIDDEN; - extern sigset_t server_block_set DECLSPEC_HIDDEN; - extern SIZE_T signal_stack_size DECLSPEC_HIDDEN; - extern SIZE_T signal_stack_mask DECLSPEC_HIDDEN; +@@ -132,6 +133,9 @@ extern struct _KUSER_SHARED_DATA *user_shared_data DECLSPEC_HIDDEN; + extern void init_environment( int argc, char *argv[], char *envp[] ) DECLSPEC_HIDDEN; + extern DWORD ntdll_umbstowcs( const char *src, DWORD srclen, WCHAR *dst, DWORD dstlen ) DECLSPEC_HIDDEN; + +extern unsigned int __wine_nb_syscalls DECLSPEC_HIDDEN; +extern void *__wine_syscall_dispatcher DECLSPEC_HIDDEN; - ++ extern unsigned int server_call_unlocked( void *req_ptr ) DECLSPEC_HIDDEN; extern void server_enter_uninterrupted_section( RTL_CRITICAL_SECTION *cs, sigset_t *sigset ) DECLSPEC_HIDDEN; + extern void server_leave_uninterrupted_section( RTL_CRITICAL_SECTION *cs, sigset_t *sigset ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h -index 4f0080db03d9..ae17b78862a3 100644 +index 63d0a519b74..92762e802ee 100644 --- a/dlls/ntdll/unixlib.h +++ b/dlls/ntdll/unixlib.h -@@ -199,7 +199,8 @@ struct unix_funcs +@@ -204,7 +204,8 @@ struct unix_funcs /* thread/process functions */ TEB * (CDECL *init_threading)( int *nb_threads_ptr, struct ldt_copy **ldt_copy, SIZE_T *size, @@ -264,7 +265,7 @@ index 4f0080db03d9..ae17b78862a3 100644 void (CDECL *exit_process)( int status ); NTSTATUS (CDECL *get_thread_ldt_entry)( HANDLE handle, void *data, ULONG len, ULONG *ret_len ); diff --git a/tools/winebuild/spec32.c b/tools/winebuild/spec32.c -index 9cc4698d0d7d..c572fe499230 100644 +index 9cc4698d0d7..c572fe49923 100644 --- a/tools/winebuild/spec32.c +++ b/tools/winebuild/spec32.c @@ -531,7 +531,7 @@ static void output_syscall_thunks_x64( DLLSPEC *spec ) diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 6e7df758..795604b4 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "343043153b44fa46a2081fa8a2c171eac7c8dab6" + echo "22970932d014f024fcf7f0f98b1a5384b1b1eb99" } # Show version information @@ -4190,7 +4190,8 @@ fi # | * [#48291] Detroit: Become Human crashes on launch # | # | Modified files: -# | * configure.ac, dlls/ntdll/unix/signal_x86_64.c, tools/winebuild/spec32.c +# | * configure.ac, dlls/ntdll/thread.c, dlls/ntdll/unix/signal_x86_64.c, dlls/ntdll/unix/thread.c, +# | dlls/ntdll/unix/unix_private.h, dlls/ntdll/unixlib.h, tools/winebuild/spec32.c # | if test "$enable_ntdll_Syscall_Emulation" -eq 1; then patch_apply ntdll-Syscall_Emulation/0001-ntdll-Support-x86_64-syscall-emulation.patch diff --git a/patches/winebuild-Fake_Dlls/0003-winebuild-Generate-syscall-thunks-for-ntdll-exports.patch b/patches/winebuild-Fake_Dlls/0003-winebuild-Generate-syscall-thunks-for-ntdll-exports.patch index a0487f91..b78ca856 100644 --- a/patches/winebuild-Fake_Dlls/0003-winebuild-Generate-syscall-thunks-for-ntdll-exports.patch +++ b/patches/winebuild-Fake_Dlls/0003-winebuild-Generate-syscall-thunks-for-ntdll-exports.patch @@ -1,4 +1,4 @@ -From d8ff827f7a94aee2bed89c620120af0a148ca81c Mon Sep 17 00:00:00 2001 +From 531ffc16d33f96bfeb65973efd1cdbd22fb6a32f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 11 May 2017 05:32:55 +0200 Subject: [PATCH] winebuild: Generate syscall thunks for ntdll exports. @@ -22,7 +22,7 @@ Based on a patch by Erich E. Hoover. 14 files changed, 221 insertions(+), 32 deletions(-) diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c -index 2553b0b9d397..cac6aae2f3dd 100644 +index 2553b0b9d39..cac6aae2f3d 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -4021,6 +4021,7 @@ PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE hModule) @@ -43,7 +43,7 @@ index 2553b0b9d397..cac6aae2f3dd 100644 RtlEnterCriticalSection( &loader_section ); diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c -index 21cc1b3ead40..18be5693a7d2 100644 +index 21cc1b3ead4..18be5693a7d 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -346,6 +346,8 @@ __ASM_STDCALL_FUNC( RtlCaptureContext, 4, @@ -65,7 +65,7 @@ index 21cc1b3ead40..18be5693a7d2 100644 } return unix_funcs->NtGetContextThread( handle, context ); diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c -index 1389a542cdee..54796476e25b 100644 +index 1389a542cde..54796476e25 100644 --- a/dlls/ntdll/tests/exception.c +++ b/dlls/ntdll/tests/exception.c @@ -1643,6 +1643,8 @@ static void test_thread_context(void) @@ -78,7 +78,7 @@ index 1389a542cdee..54796476e25b 100644 ok( context.SegCs == LOWORD(expect.SegCs), "wrong SegCs %08x/%08x\n", context.SegCs, expect.SegCs ); ok( context.SegDs == LOWORD(expect.SegDs), "wrong SegDs %08x/%08x\n", context.SegDs, expect.SegDs ); diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c -index ff5fe9d6226a..e93498b27ea0 100644 +index ff5fe9d6226..e93498b27ea 100644 --- a/dlls/ntdll/thread.c +++ b/dlls/ntdll/thread.c @@ -220,6 +220,14 @@ int __cdecl __wine_dbg_output( const char *str ) @@ -106,7 +106,7 @@ index ff5fe9d6226a..e93498b27ea0 100644 peb = teb->Peb; peb->FastPebLock = &peb_lock; diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c -index 97b191e1a5b3..2dbaa43e731a 100644 +index 97b191e1a5b..2dbaa43e731 100644 --- a/dlls/ntdll/unix/thread.c +++ b/dlls/ntdll/unix/thread.c @@ -85,7 +85,7 @@ static void pthread_exit_wrapper( int status ) @@ -127,10 +127,10 @@ index 97b191e1a5b3..2dbaa43e731a 100644 thread_data->request_fd = -1; thread_data->reply_fd = -1; diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h -index 92a58417827b..33a551e947c2 100644 +index e26a64fdac0..e93d8f21d10 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h -@@ -108,7 +108,7 @@ extern void CDECL server_release_fd( HANDLE handle, int unix_fd ) DECLSPEC_HIDDE +@@ -112,7 +112,7 @@ extern void CDECL server_release_fd( HANDLE handle, int unix_fd ) DECLSPEC_HIDDE extern void CDECL server_init_process_done( void *relay ) DECLSPEC_HIDDEN; extern TEB * CDECL init_threading( int *nb_threads_ptr, struct ldt_copy **ldt_copy, SIZE_T *size, BOOL *suspend, unsigned int *cpus, BOOL *wow64, @@ -140,19 +140,19 @@ index 92a58417827b..33a551e947c2 100644 extern void CDECL DECLSPEC_NORETURN exit_process( int status ) DECLSPEC_HIDDEN; extern NTSTATUS CDECL get_thread_ldt_entry( HANDLE handle, void *data, ULONG len, ULONG *ret_len ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h -index 4c580c49d139..4f0080db03d9 100644 +index 768ab5b006c..63d0a519b74 100644 --- a/dlls/ntdll/unixlib.h +++ b/dlls/ntdll/unixlib.h @@ -28,7 +28,7 @@ struct ldt_copy; struct msghdr; /* increment this when you change the function table */ --#define NTDLL_UNIXLIB_VERSION 38 -+#define NTDLL_UNIXLIB_VERSION 39 +-#define NTDLL_UNIXLIB_VERSION 41 ++#define NTDLL_UNIXLIB_VERSION 42 struct unix_funcs { -@@ -199,7 +199,7 @@ struct unix_funcs +@@ -204,7 +204,7 @@ struct unix_funcs /* thread/process functions */ TEB * (CDECL *init_threading)( int *nb_threads_ptr, struct ldt_copy **ldt_copy, SIZE_T *size, @@ -162,7 +162,7 @@ index 4c580c49d139..4f0080db03d9 100644 void (CDECL *exit_process)( int status ); NTSTATUS (CDECL *get_thread_ldt_entry)( HANDLE handle, void *data, ULONG len, ULONG *ret_len ); diff --git a/include/winternl.h b/include/winternl.h -index 2d9f54b89d8c..0c15a0ee6c34 100644 +index 2d9f54b89d8..0c15a0ee6c3 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -360,7 +360,7 @@ typedef struct _TEB @@ -175,7 +175,7 @@ index 2d9f54b89d8c..0c15a0ee6c34 100644 ULONG FpSoftwareStatusRegister; /* 0c8/010c */ PVOID SystemReserved1[54]; /* 0cc/0110 used for krnl386.exe16 private data in Wine */ diff --git a/tools/winebuild/build.h b/tools/winebuild/build.h -index c162888a0356..55d5b0b9dc28 100644 +index c162888a035..55d5b0b9dc2 100644 --- a/tools/winebuild/build.h +++ b/tools/winebuild/build.h @@ -105,6 +105,7 @@ typedef struct @@ -223,7 +223,7 @@ index c162888a0356..55d5b0b9dc28 100644 extern int byte_swapped; diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c -index 04ab433dd65a..0c6bafed8e54 100644 +index 04ab433dd65..0c6bafed8e5 100644 --- a/tools/winebuild/import.c +++ b/tools/winebuild/import.c @@ -531,6 +531,7 @@ static void check_undefined_forwards( DLLSPEC *spec ) @@ -263,7 +263,7 @@ index 04ab433dd65a..0c6bafed8e54 100644 } } diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c -index 0f2b9c1e10ad..74216f8bb6e7 100644 +index 0f2b9c1e10a..74216f8bb6e 100644 --- a/tools/winebuild/parser.c +++ b/tools/winebuild/parser.c @@ -543,6 +543,24 @@ static const char *parse_spec_flags( DLLSPEC *spec, ORDDEF *odp ) @@ -354,7 +354,7 @@ index 0f2b9c1e10ad..74216f8bb6e7 100644 } diff --git a/tools/winebuild/spec16.c b/tools/winebuild/spec16.c -index a52c03aaa6a7..15ef9a3f8930 100644 +index a52c03aaa6a..15ef9a3f893 100644 --- a/tools/winebuild/spec16.c +++ b/tools/winebuild/spec16.c @@ -495,27 +495,6 @@ static int relay_type_compare( const void *e1, const void *e2 ) @@ -394,7 +394,7 @@ index a52c03aaa6a7..15ef9a3f8930 100644 entry_point->u.func.nb_args = 0; assert( !spec->ordinals[0] ); diff --git a/tools/winebuild/spec32.c b/tools/winebuild/spec32.c -index b1e20e0484dc..22dd399cb2b4 100644 +index b1e20e0484d..22dd399cb2b 100644 --- a/tools/winebuild/spec32.c +++ b/tools/winebuild/spec32.c @@ -374,6 +374,109 @@ static void output_relay_debug( DLLSPEC *spec ) @@ -516,7 +516,7 @@ index b1e20e0484dc..22dd399cb2b4 100644 output_exports( spec ); output_imports( spec ); diff --git a/tools/winebuild/utils.c b/tools/winebuild/utils.c -index 2a1fc960926b..07a579004adc 100644 +index 2a1fc960926..07a579004ad 100644 --- a/tools/winebuild/utils.c +++ b/tools/winebuild/utils.c @@ -860,6 +860,7 @@ void free_dll_spec( DLLSPEC *spec ) diff --git a/patches/winedevice-Default_Drivers/0004-programs-winedevice-Load-some-common-drivers-and-fix.patch b/patches/winedevice-Default_Drivers/0004-programs-winedevice-Load-some-common-drivers-and-fix.patch index a145bffa..21c7373a 100644 --- a/patches/winedevice-Default_Drivers/0004-programs-winedevice-Load-some-common-drivers-and-fix.patch +++ b/patches/winedevice-Default_Drivers/0004-programs-winedevice-Load-some-common-drivers-and-fix.patch @@ -1,4 +1,4 @@ -From 86c0ddea979a6124a4e60a970501102b83664a21 Mon Sep 17 00:00:00 2001 +From d67ca0757315f863020402e44c50b89f08be3ae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 8 Jun 2017 23:50:03 +0200 Subject: [PATCH] programs/winedevice: Load some common drivers and fix ldr @@ -10,18 +10,18 @@ Subject: [PATCH] programs/winedevice: Load some common drivers and fix ldr 2 files changed, 76 insertions(+) diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c -index f51064986b5..d34db7c5828 100644 +index fa8d7b20e3e..176b60d66ad 100644 --- a/dlls/ntoskrnl.exe/tests/driver.c +++ b/dlls/ntoskrnl.exe/tests/driver.c -@@ -44,6 +44,7 @@ static const WCHAR driver_link[] = {'\\','D','o','s','D','e','v','i','c','e','s' +@@ -46,6 +46,7 @@ static const WCHAR driver_link[] = {'\\','D','o','s','D','e','v','i','c','e','s' static DRIVER_OBJECT *driver_obj; static DEVICE_OBJECT *lower_device, *upper_device; +static LDR_DATA_TABLE_ENTRY *ldr_module; - static HANDLE okfile; - static LONG successes; -@@ -1681,6 +1682,7 @@ static void test_resource(void) + static POBJECT_TYPE *pExEventObjectType, *pIoFileObjectType, *pPsThreadType, *pIoDriverObjectType; + static PEPROCESS *pPsInitialSystemProcess; +@@ -1545,6 +1546,7 @@ static void test_resource(void) ok(status == STATUS_SUCCESS, "got status %#x\n", status); } @@ -29,7 +29,7 @@ index f51064986b5..d34db7c5828 100644 static void test_lookup_thread(void) { NTSTATUS status; -@@ -2132,6 +2134,52 @@ static void test_process_memory(const struct test_input *test_input) +@@ -1996,6 +1998,52 @@ static void test_process_memory(const struct test_input *test_input) ObDereferenceObject(process); } @@ -82,7 +82,7 @@ index f51064986b5..d34db7c5828 100644 static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack) { ULONG length = stack->Parameters.DeviceIoControl.OutputBufferLength; -@@ -2178,6 +2226,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st +@@ -2042,6 +2090,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st test_stack_callout(); test_lookaside_list(); test_ob_reference(test_input->path); @@ -90,7 +90,7 @@ index f51064986b5..d34db7c5828 100644 test_resource(); test_lookup_thread(); test_IoAttachDeviceToDeviceStack(); -@@ -2431,6 +2480,7 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry) +@@ -2296,6 +2345,7 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry) DbgPrint("loading driver\n"); driver_obj = driver; diff --git a/patches/winex11-DefaultDisplayFrequency/0001-winex11.drv-Allow-to-select-default-display-frequenc.patch b/patches/winex11-DefaultDisplayFrequency/0001-winex11.drv-Allow-to-select-default-display-frequenc.patch index 401f0890..caeecbd5 100644 --- a/patches/winex11-DefaultDisplayFrequency/0001-winex11.drv-Allow-to-select-default-display-frequenc.patch +++ b/patches/winex11-DefaultDisplayFrequency/0001-winex11.drv-Allow-to-select-default-display-frequenc.patch @@ -1,4 +1,4 @@ -From df6fb4c8cee4e6cf8223ca065234749dec3cfbaf Mon Sep 17 00:00:00 2001 +From 9c83eae2b95981ba4ca812bacbf116eaf412a218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 5 Nov 2015 14:33:48 +0100 Subject: [PATCH] winex11.drv: Allow to select default display frequency in @@ -11,16 +11,16 @@ registry key (of type STRING) to select the default display frequency: HKCU\Software\Wine\X11 Driver\DefaultDisplayFrequency --- - dlls/winex11.drv/settings.c | 58 ++++++++++++++++++++++------------ + dlls/winex11.drv/settings.c | 54 ++++++++++++++++++++++++---------- dlls/winex11.drv/x11drv.h | 1 + dlls/winex11.drv/x11drv_main.c | 4 +++ - 3 files changed, 43 insertions(+), 20 deletions(-) + 3 files changed, 44 insertions(+), 15 deletions(-) diff --git a/dlls/winex11.drv/settings.c b/dlls/winex11.drv/settings.c -index 70ce35361b6..cada9cd5df2 100644 +index c3f31d0430d..5e01b31106e 100644 --- a/dlls/winex11.drv/settings.c +++ b/dlls/winex11.drv/settings.c -@@ -348,7 +348,7 @@ LONG CDECL X11DRV_ChangeDisplaySettingsEx( LPCWSTR devname, LPDEVMODEW devmode, +@@ -378,7 +378,7 @@ LONG CDECL X11DRV_ChangeDisplaySettingsEx( LPCWSTR devname, LPDEVMODEW devmode, WCHAR primary_adapter[CCHDEVICENAME]; char bpp_buffer[16], freq_buffer[18]; DEVMODEW default_mode; @@ -29,7 +29,7 @@ index 70ce35361b6..cada9cd5df2 100644 if (!get_primary_adapter(primary_adapter)) return DISP_CHANGE_FAILED; -@@ -379,6 +379,7 @@ LONG CDECL X11DRV_ChangeDisplaySettingsEx( LPCWSTR devname, LPDEVMODEW devmode, +@@ -402,6 +402,7 @@ LONG CDECL X11DRV_ChangeDisplaySettingsEx( LPCWSTR devname, LPDEVMODEW devmode, return DISP_CHANGE_SUCCESSFUL; } @@ -37,7 +37,7 @@ index 70ce35361b6..cada9cd5df2 100644 for (i = 0; i < dd_mode_count; i++) { if (devmode->dmFields & DM_BITSPERPEL) -@@ -396,32 +397,49 @@ LONG CDECL X11DRV_ChangeDisplaySettingsEx( LPCWSTR devname, LPDEVMODEW devmode, +@@ -419,12 +420,24 @@ LONG CDECL X11DRV_ChangeDisplaySettingsEx( LPCWSTR devname, LPDEVMODEW devmode, if (devmode->dmPelsHeight != dd_modes[i].height) continue; } @@ -50,11 +50,6 @@ index 70ce35361b6..cada9cd5df2 100644 + devmode->dmDisplayFrequency != dd_modes[i].refresh_rate) continue; } -- /* we have a valid mode */ -- TRACE("Requested display settings match mode %d (%s)\n", i, handler_name); -- -- if (flags & CDS_UPDATEREGISTRY) -- write_registry_settings(devmode); + else if (default_display_frequency != 0) + { + if (dd_modes[i].refresh_rate != 0 && @@ -65,6 +60,13 @@ index 70ce35361b6..cada9cd5df2 100644 + break; + } + } ++ + /* we have a valid mode */ + TRACE("Requested display settings match mode %d (%s)\n", i, handler_name); + +@@ -441,20 +454,31 @@ LONG CDECL X11DRV_ChangeDisplaySettingsEx( LPCWSTR devname, LPDEVMODEW devmode, + return DISP_CHANGE_SUCCESSFUL; + } - if (!(flags & (CDS_TEST | CDS_NORESET))) - return pSetCurrentMode(i); @@ -98,7 +100,7 @@ index 70ce35361b6..cada9cd5df2 100644 + TRACE("Requested display settings match mode %d (%s)\n", mode, handler_name); + + if (flags & CDS_UPDATEREGISTRY) -+ write_registry_settings(devmode); ++ write_registry_settings(devname, devmode); + + if (!(flags & (CDS_TEST | CDS_NORESET))) + return pSetCurrentMode(mode); @@ -107,7 +109,7 @@ index 70ce35361b6..cada9cd5df2 100644 + return DISP_CHANGE_SUCCESSFUL; } diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h -index 803e3e4103e..6dfe4a35f6b 100644 +index c2c845503e6..85a1a46788b 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -403,6 +403,7 @@ extern BOOL private_color_map DECLSPEC_HIDDEN; @@ -119,7 +121,7 @@ index 803e3e4103e..6dfe4a35f6b 100644 extern HMODULE x11drv_module DECLSPEC_HIDDEN; extern char *process_name DECLSPEC_HIDDEN; diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c -index 0732aaa1113..ee8de0a3830 100644 +index f08ac92e36f..f9fe5234c57 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -85,6 +85,7 @@ BOOL client_side_with_render = TRUE; diff --git a/patches/ws2_32-WSACleanup/0002-ws2_32-Invalidate-client-side-file-descriptor-cache-.patch b/patches/ws2_32-WSACleanup/0002-ws2_32-Invalidate-client-side-file-descriptor-cache-.patch index 7b9e61d8..f59482fe 100644 --- a/patches/ws2_32-WSACleanup/0002-ws2_32-Invalidate-client-side-file-descriptor-cache-.patch +++ b/patches/ws2_32-WSACleanup/0002-ws2_32-Invalidate-client-side-file-descriptor-cache-.patch @@ -1,4 +1,4 @@ -From 6cc54a973b9b786166db76df6a4f0a33867103ce Mon Sep 17 00:00:00 2001 +From b8b29d74bc946a359d9296a051371b78f88570d5 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sun, 6 Sep 2015 12:41:17 +0200 Subject: [PATCH] ws2_32: Invalidate client-side file descriptor cache in @@ -17,10 +17,10 @@ Subject: [PATCH] ws2_32: Invalidate client-side file descriptor cache in 9 files changed, 36 insertions(+), 5 deletions(-) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec -index e054eabba3a..82ed6c68cbe 100644 +index a9422723b71..e4f2f0e9c2b 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec -@@ -1576,6 +1576,7 @@ +@@ -1578,6 +1578,7 @@ # Server interface @ cdecl -norelay wine_server_call(ptr) @@ -48,10 +48,10 @@ index 9e1cc85a36e..3f4ba60b7bb 100644 /*********************************************************************** * wine_server_release_fd (NTDLL.@) diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c -index eac43ba42c4..cd11d0d647e 100644 +index 370a57dea9e..29d7c1c681c 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c -@@ -1089,6 +1089,7 @@ static struct unix_funcs unix_funcs = +@@ -927,6 +927,7 @@ static struct unix_funcs unix_funcs = get_thread_ldt_entry, wine_server_call, server_send_fd, @@ -60,10 +60,10 @@ index eac43ba42c4..cd11d0d647e 100644 server_fd_to_handle, server_handle_to_fd, diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c -index cf6f6c3832c..586d0ffcf72 100644 +index 5faca657783..2e278480896 100644 --- a/dlls/ntdll/unix/server.c +++ b/dlls/ntdll/unix/server.c -@@ -995,6 +995,26 @@ static int remove_fd_from_cache( HANDLE handle ) +@@ -1003,6 +1003,26 @@ static int remove_fd_from_cache( HANDLE handle ) return fd; } @@ -91,10 +91,10 @@ index cf6f6c3832c..586d0ffcf72 100644 /*********************************************************************** * server_get_unix_fd diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h -index 3e61111cba5..ae0c47b5a79 100644 +index d2586556f6e..e26a64fdac0 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h -@@ -95,6 +95,7 @@ extern void CDECL virtual_release_address_space(void) DECLSPEC_HIDDEN; +@@ -100,6 +100,7 @@ extern void CDECL virtual_release_address_space(void) DECLSPEC_HIDDEN; extern void CDECL virtual_set_large_address_space(void) DECLSPEC_HIDDEN; extern void CDECL server_send_fd( int fd ) DECLSPEC_HIDDEN; @@ -103,19 +103,19 @@ index 3e61111cba5..ae0c47b5a79 100644 int *needs_close, enum server_fd_type *type, unsigned int *options ) DECLSPEC_HIDDEN; diff --git a/dlls/ntdll/unixlib.h b/dlls/ntdll/unixlib.h -index 80d3ce27601..4c580c49d13 100644 +index 54705b7f6d2..768ab5b006c 100644 --- a/dlls/ntdll/unixlib.h +++ b/dlls/ntdll/unixlib.h @@ -28,7 +28,7 @@ struct ldt_copy; struct msghdr; /* increment this when you change the function table */ --#define NTDLL_UNIXLIB_VERSION 37 -+#define NTDLL_UNIXLIB_VERSION 38 +-#define NTDLL_UNIXLIB_VERSION 40 ++#define NTDLL_UNIXLIB_VERSION 41 struct unix_funcs { -@@ -207,6 +207,7 @@ struct unix_funcs +@@ -212,6 +212,7 @@ struct unix_funcs /* server functions */ unsigned int (CDECL *server_call)( void *req_ptr ); void (CDECL *server_send_fd)( int fd ); diff --git a/staging/upstream-commit b/staging/upstream-commit index 1db6d9f7..83f6069b 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -343043153b44fa46a2081fa8a2c171eac7c8dab6 +22970932d014f024fcf7f0f98b1a5384b1b1eb99