Rebase against 22970932d014f024fcf7f0f98b1a5384b1b1eb99.

This commit is contained in:
Alistair Leslie-Hughes 2020-06-12 09:35:12 +10:00
parent 7934e14fc0
commit 11f545447b
7 changed files with 80 additions and 76 deletions

View File

@ -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 <pgofman@codeweavers.com>
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 )

View File

@ -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

View File

@ -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?= <michael@fds-team.de>
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 )

View File

@ -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?= <michael@fds-team.de>
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;

View File

@ -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?= <michael@fds-team.de>
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;

View File

@ -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 <sebastian@fds-team.de>
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 );

View File

@ -1 +1 @@
343043153b44fa46a2081fa8a2c171eac7c8dab6
22970932d014f024fcf7f0f98b1a5384b1b1eb99