From db6b479557ae85b71eb164b44163eb6cace3629a Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Wed, 14 Jun 2023 10:59:42 +1000 Subject: [PATCH] Rebase against 766448f8ffe51b83105bd0795a5cbc7b8f7c8894. --- ...f-a-WRITECOPY-page-has-been-modified.patch | 16 +++---- ...-track-of-pointer-and-device-button-.patch | 20 ++++---- ...HWMSG_RAWINPUT-flags-only-when-RAWIN.patch | 44 +++++++++--------- ...en-to-RawMotion-and-RawButton-events.patch | 46 +++++++++---------- staging/upstream-commit | 2 +- 5 files changed, 64 insertions(+), 64 deletions(-) diff --git a/patches/ntdll-WRITECOPY/0005-ntdll-Track-if-a-WRITECOPY-page-has-been-modified.patch b/patches/ntdll-WRITECOPY/0005-ntdll-Track-if-a-WRITECOPY-page-has-been-modified.patch index 45db327a..69835296 100644 --- a/patches/ntdll-WRITECOPY/0005-ntdll-Track-if-a-WRITECOPY-page-has-been-modified.patch +++ b/patches/ntdll-WRITECOPY/0005-ntdll-Track-if-a-WRITECOPY-page-has-been-modified.patch @@ -1,4 +1,4 @@ -From 045f711cb526f02ce6a163bf8ab973b5d06a1c86 Mon Sep 17 00:00:00 2001 +From e00479d767bf9bbb480be7b5c75dbd55812feb4d Mon Sep 17 00:00:00 2001 From: Andrew Wesie Date: Fri, 24 Apr 2020 14:55:14 -0500 Subject: [PATCH] ntdll: Track if a WRITECOPY page has been modified. @@ -12,7 +12,7 @@ Signed-off-by: Andrew Wesie 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c -index 2688383cc9f..b0c888d13a0 100644 +index 75d5a3fc966..c91484432c1 100644 --- a/dlls/ntdll/unix/virtual.c +++ b/dlls/ntdll/unix/virtual.c @@ -122,6 +122,7 @@ struct file_view @@ -21,9 +21,9 @@ index 2688383cc9f..b0c888d13a0 100644 #define VPROT_WRITEWATCH 0x40 +#define VPROT_WRITTEN 0x80 /* per-mapping protection flags */ - #define VPROT_SYSTEM 0x0200 /* system view (underlying mmap not under our control) */ - #define VPROT_PLACEHOLDER 0x0400 -@@ -1130,7 +1131,7 @@ static int get_unix_prot( BYTE vprot ) + #define VPROT_ARM64EC 0x0100 /* view may contain ARM64EC code */ + #define VPROT_SYSTEM 0x0200 /* system view (underlying mmap not under our control) */ +@@ -1127,7 +1128,7 @@ static int get_unix_prot( BYTE vprot ) #if defined(__i386__) if (vprot & VPROT_WRITECOPY) { @@ -32,7 +32,7 @@ index 2688383cc9f..b0c888d13a0 100644 prot = (prot & ~PROT_WRITE) | PROT_READ; else prot |= PROT_WRITE | PROT_READ; -@@ -1702,7 +1703,11 @@ static NTSTATUS create_view( struct file_view **view_ret, void *base, size_t siz +@@ -1641,7 +1642,11 @@ static NTSTATUS create_view( struct file_view **view_ret, void *base, size_t siz */ static DWORD get_win32_prot( BYTE vprot, unsigned int map_prot ) { @@ -45,7 +45,7 @@ index 2688383cc9f..b0c888d13a0 100644 if (vprot & VPROT_GUARD) ret |= PAGE_GUARD; if (map_prot & SEC_NOCACHE) ret |= PAGE_NOCACHE; return ret; -@@ -1813,12 +1818,21 @@ static BOOL set_vprot( struct file_view *view, void *base, size_t size, BYTE vpr +@@ -1752,12 +1757,21 @@ static BOOL set_vprot( struct file_view *view, void *base, size_t size, BYTE vpr if (view->protect & VPROT_WRITEWATCH) { /* each page may need different protections depending on write watch flag */ @@ -69,7 +69,7 @@ index 2688383cc9f..b0c888d13a0 100644 return TRUE; } -@@ -3691,7 +3705,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack ) +@@ -3739,7 +3753,7 @@ NTSTATUS virtual_handle_fault( void *addr, DWORD err, void *stack ) } if (vprot & VPROT_WRITECOPY) { 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 66b6ac18..3ba4801e 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 1bcdd8784df9149082a1686bb1a346a0d2f5bd28 Mon Sep 17 00:00:00 2001 +From 14edfa85b447be28ec0f47396c6ef03348c89586 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 @@ -51,7 +51,7 @@ index 195cc65eddb..83169a9bb4d 100644 } diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c -index 2d4453e320a..abf14ac55b4 100644 +index 6e7cdb642ff..9158e75b20d 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c @@ -30,6 +30,9 @@ @@ -64,7 +64,7 @@ index 2d4453e320a..abf14ac55b4 100644 #ifdef HAVE_X11_EXTENSIONS_XINPUT2_H #include #endif -@@ -144,6 +147,14 @@ MAKE_FUNCPTR(XISelectEvents); +@@ -141,6 +144,14 @@ MAKE_FUNCPTR(XISelectEvents); #undef MAKE_FUNCPTR #endif @@ -79,8 +79,8 @@ index 2d4453e320a..abf14ac55b4 100644 /*********************************************************************** * X11DRV_Xcursor_Init * -@@ -249,6 +260,70 @@ void sync_window_cursor( Window window ) - set_window_cursor( window, cursor ); +@@ -228,6 +239,70 @@ void set_window_cursor( Window window, HCURSOR handle ) + XFlush( gdi_display ); } +struct mouse_button_mapping @@ -150,7 +150,7 @@ index 2d4453e320a..abf14ac55b4 100644 #ifdef HAVE_X11_EXTENSIONS_XINPUT2_H /*********************************************************************** * update_relative_valuators -@@ -1723,6 +1798,8 @@ static BOOL X11DRV_DeviceChanged( XGenericEventCookie *xev ) +@@ -1699,6 +1774,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 2d4453e320a..abf14ac55b4 100644 return TRUE; } -@@ -1810,13 +1887,12 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) +@@ -1786,13 +1863,12 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) #endif /* HAVE_X11_EXTENSIONS_XINPUT2_H */ @@ -174,7 +174,7 @@ index 2d4453e320a..abf14ac55b4 100644 int event, error; void *libxi_handle = dlopen( SONAME_LIBXI, RTLD_NOW ); -@@ -1832,11 +1908,20 @@ void x11drv_xinput_load(void) +@@ -1808,11 +1884,20 @@ void x11drv_xinput_load(void) return; \ } @@ -196,10 +196,10 @@ index 2d4453e320a..abf14ac55b4 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 225b1534159..29c7259134a 100644 +index f84b1c20752..d3f74c63df0 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h -@@ -695,6 +695,7 @@ extern void sync_window_cursor( Window window ) DECLSPEC_HIDDEN; +@@ -693,6 +693,7 @@ extern void set_window_cursor( Window window, HCURSOR handle ) DECLSPEC_HIDDEN; extern void retry_grab_clipping_window(void) DECLSPEC_HIDDEN; extern void move_resize_window( HWND hwnd, int dir ) DECLSPEC_HIDDEN; extern void X11DRV_InitKeyboard( Display *display ) DECLSPEC_HIDDEN; diff --git a/patches/user32-rawinput-mouse/0006-user32-Set-SEND_HWMSG_RAWINPUT-flags-only-when-RAWIN.patch b/patches/user32-rawinput-mouse/0006-user32-Set-SEND_HWMSG_RAWINPUT-flags-only-when-RAWIN.patch index a6e6642a..102d0036 100644 --- a/patches/user32-rawinput-mouse/0006-user32-Set-SEND_HWMSG_RAWINPUT-flags-only-when-RAWIN.patch +++ b/patches/user32-rawinput-mouse/0006-user32-Set-SEND_HWMSG_RAWINPUT-flags-only-when-RAWIN.patch @@ -1,4 +1,4 @@ -From aed9514fd73f808a0fe1ed00829fe2dc68735423 Mon Sep 17 00:00:00 2001 +From 0ecc6d7db43e68d9d8d6a9ce2db7e664af8eecd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Wed, 24 Mar 2021 23:29:28 +0100 Subject: [PATCH] user32: Set SEND_HWMSG_RAWINPUT flags only when RAWINPUT is @@ -19,10 +19,10 @@ __wine_send_input with INPUT_HARDWARE input type and a rawinput. 8 files changed, 22 insertions(+), 13 deletions(-) diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c -index 83d2a4e3efb..511d4040d38 100644 +index 5d78b35dd60..cbdd4b195d3 100644 --- a/dlls/win32u/input.c +++ b/dlls/win32u/input.c -@@ -653,6 +653,7 @@ UINT WINAPI NtUserSendInput( UINT count, INPUT *inputs, int size ) +@@ -655,6 +655,7 @@ UINT WINAPI NtUserSendInput( UINT count, INPUT *inputs, int size ) { UINT i; NTSTATUS status = STATUS_SUCCESS; @@ -30,7 +30,7 @@ index 83d2a4e3efb..511d4040d38 100644 if (size != sizeof(INPUT)) { -@@ -682,7 +683,7 @@ UINT WINAPI NtUserSendInput( UINT count, INPUT *inputs, int size ) +@@ -684,7 +685,7 @@ UINT WINAPI NtUserSendInput( UINT count, INPUT *inputs, int size ) update_mouse_coords( &input ); /* fallthrough */ case INPUT_KEYBOARD: @@ -40,10 +40,10 @@ index 83d2a4e3efb..511d4040d38 100644 case INPUT_HARDWARE: RtlSetLastWin32Error( ERROR_CALL_NOT_IMPLEMENTED ); diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c -index a8ced6eac52..c860612f2b4 100644 +index f47154d701a..00ed06abbdf 100644 --- a/dlls/win32u/message.c +++ b/dlls/win32u/message.c -@@ -2627,7 +2627,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, const RAWINPUT *r +@@ -2632,7 +2632,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, const RAWINPUT *r req->input.mouse.flags = input->mi.dwFlags; req->input.mouse.time = input->mi.time; req->input.mouse.info = input->mi.dwExtraInfo; @@ -52,7 +52,7 @@ index a8ced6eac52..c860612f2b4 100644 affects_key_state = !!(input->mi.dwFlags & (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP | MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP | MOUSEEVENTF_MIDDLEDOWN | MOUSEEVENTF_MIDDLEUP | -@@ -2639,7 +2639,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, const RAWINPUT *r +@@ -2644,7 +2644,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, const RAWINPUT *r req->input.kbd.flags = input->ki.dwFlags; req->input.kbd.time = input->ki.time; req->input.kbd.info = input->ki.dwExtraInfo; @@ -83,7 +83,7 @@ index 7c55c481353..9a20daf8809 100644 /*********************************************************************** diff --git a/dlls/wineandroid.drv/window.c b/dlls/wineandroid.drv/window.c -index f01df37a400..eb96300da89 100644 +index 3a61a2d44d9..a94183f46bf 100644 --- a/dlls/wineandroid.drv/window.c +++ b/dlls/wineandroid.drv/window.c @@ -424,6 +424,7 @@ static int process_events( DWORD mask ) @@ -134,7 +134,7 @@ index c1963daa56e..14f0010e37e 100644 diff --git a/dlls/winemac.drv/mouse.c b/dlls/winemac.drv/mouse.c -index cb194095d55..74c329488c4 100644 +index 5c04c71e1dc..260831c44dc 100644 --- a/dlls/winemac.drv/mouse.c +++ b/dlls/winemac.drv/mouse.c @@ -129,6 +129,7 @@ static const CFStringRef cocoa_cursor_names[] = @@ -155,7 +155,7 @@ index cb194095d55..74c329488c4 100644 diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c -index c6a167dc4c6..03fe0ce8d32 100644 +index 83169a9bb4d..ecd513ee2a4 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c @@ -1123,6 +1123,7 @@ static WORD EVENT_event_to_vkey( XIC xic, XKeyEvent *e) @@ -176,27 +176,27 @@ index c6a167dc4c6..03fe0ce8d32 100644 diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c -index e25b3e7728a..bb9807bf850 100644 +index 9158e75b20d..f745054ca64 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c -@@ -749,6 +749,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU +@@ -647,6 +647,7 @@ static void map_event_coords( HWND hwnd, Window window, Window event_root, int x + static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPUT *input ) { struct x11drv_win_data *data; - Window win = 0; + RAWINPUT rawinput; input->type = INPUT_MOUSE; -@@ -765,7 +766,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU - sync_window_cursor( window ); - last_cursor_change = input->u.mi.time; - } +@@ -657,7 +658,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU + + if (!clip_hwnd) return; + if (thread_data->clip_window != window) return; - __wine_send_input( hwnd, input, NULL ); + __wine_send_input( hwnd, input, &rawinput ); return; } -@@ -806,7 +807,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU +@@ -684,7 +685,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU SERVER_END_REQ; } @@ -205,7 +205,7 @@ index e25b3e7728a..bb9807bf850 100644 } #ifdef SONAME_LIBXCURSOR -@@ -1789,6 +1790,7 @@ void move_resize_window( HWND hwnd, int dir ) +@@ -1612,6 +1613,7 @@ void move_resize_window( HWND hwnd, int dir ) { MSG msg; INPUT input; @@ -213,7 +213,7 @@ index e25b3e7728a..bb9807bf850 100644 int x, y, rootX, rootY; if (!XQueryPointer( display, root_window, &root, &child, &rootX, &rootY, &x, &y, &xstate )) break; -@@ -1804,7 +1806,7 @@ void move_resize_window( HWND hwnd, int dir ) +@@ -1627,7 +1629,7 @@ void move_resize_window( HWND hwnd, int dir ) input.u.mi.dwFlags = button_up_flags[button - 1] | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE; input.u.mi.time = NtGetTickCount(); input.u.mi.dwExtraInfo = 0; @@ -222,7 +222,7 @@ index e25b3e7728a..bb9807bf850 100644 } while (NtUserPeekMessage( &msg, 0, 0, 0, PM_REMOVE )) -@@ -2017,6 +2019,7 @@ static BOOL map_raw_event_coords( XIRawEvent *event, INPUT *input ) +@@ -1840,6 +1842,7 @@ static BOOL map_raw_event_coords( XIRawEvent *event, INPUT *input ) static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) { XIRawEvent *event = xev->data; @@ -230,7 +230,7 @@ index e25b3e7728a..bb9807bf850 100644 INPUT input; if (broken_rawevents && is_old_motion_event( xev->serial )) -@@ -2034,7 +2037,7 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) +@@ -1857,7 +1860,7 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) input.u.mi.dy = 0; if (!map_raw_event_coords( event, &input )) return FALSE; diff --git a/patches/user32-rawinput-mouse/0008-winex11.drv-Listen-to-RawMotion-and-RawButton-events.patch b/patches/user32-rawinput-mouse/0008-winex11.drv-Listen-to-RawMotion-and-RawButton-events.patch index ec5432d7..865f1dc0 100644 --- a/patches/user32-rawinput-mouse/0008-winex11.drv-Listen-to-RawMotion-and-RawButton-events.patch +++ b/patches/user32-rawinput-mouse/0008-winex11.drv-Listen-to-RawMotion-and-RawButton-events.patch @@ -1,4 +1,4 @@ -From 5cf6861a6cff5f3f3bee4694f07ba8679cba607d Mon Sep 17 00:00:00 2001 +From 8a0662e0e65a8e9ebf0cf3e3123bc8cac071251d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Mon, 25 Oct 2021 11:45:47 +0200 Subject: [PATCH] winex11.drv: Listen to RawMotion and RawButton* events in the @@ -15,10 +15,10 @@ instance used in our dinput implementation. 4 files changed, 112 insertions(+), 8 deletions(-) diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c -index ff654ae6647..33a3aca953d 100644 +index d56634104e1..6193717e82f 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c -@@ -320,6 +320,10 @@ static enum event_merge_action merge_raw_motion_events( XIRawEvent *prev, XIRawE +@@ -318,6 +318,10 @@ static enum event_merge_action merge_raw_motion_events( XIRawEvent *prev, XIRawE */ static enum event_merge_action merge_events( XEvent *prev, XEvent *next ) { @@ -29,7 +29,7 @@ index ff654ae6647..33a3aca953d 100644 switch (prev->type) { case ConfigureNotify: -@@ -351,19 +355,21 @@ static enum event_merge_action merge_events( XEvent *prev, XEvent *next ) +@@ -349,19 +353,21 @@ static enum event_merge_action merge_events( XEvent *prev, XEvent *next ) case GenericEvent: if (next->xcookie.extension != xinput2_opcode) break; if (next->xcookie.evtype != XI_RawMotion) break; @@ -54,10 +54,10 @@ index ff654ae6647..33a3aca953d 100644 #endif } diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c -index bb9807bf850..919cc8c7fb8 100644 +index f745054ca64..81c474d6605 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c -@@ -413,7 +413,18 @@ void x11drv_xinput_enable( Display *display, Window window, long event_mask ) +@@ -392,7 +392,18 @@ void x11drv_xinput_enable( Display *display, Window window, long event_mask ) memset( mask_bits, 0, sizeof(mask_bits) ); XISetMask( mask_bits, XI_DeviceChanged ); XISetMask( mask_bits, XI_RawMotion ); @@ -77,16 +77,16 @@ index bb9807bf850..919cc8c7fb8 100644 pXISelectEvents( display, DefaultRootWindow( display ), &mask, 1 ); -@@ -766,7 +777,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU - sync_window_cursor( window ); - last_cursor_change = input->u.mi.time; - } +@@ -658,7 +669,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU + + if (!clip_hwnd) return; + if (thread_data->clip_window != window) return; - __wine_send_input( hwnd, input, &rawinput ); -+ __wine_send_input( hwnd, input, NULL ); ++ __wine_send_input( hwnd, input, NULL ); return; } -@@ -807,7 +818,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU +@@ -685,7 +696,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU SERVER_END_REQ; } @@ -95,7 +95,7 @@ index bb9807bf850..919cc8c7fb8 100644 } #ifdef SONAME_LIBXCURSOR -@@ -1790,7 +1801,6 @@ void move_resize_window( HWND hwnd, int dir ) +@@ -1613,7 +1624,6 @@ void move_resize_window( HWND hwnd, int dir ) { MSG msg; INPUT input; @@ -103,7 +103,7 @@ index bb9807bf850..919cc8c7fb8 100644 int x, y, rootX, rootY; if (!XQueryPointer( display, root_window, &root, &child, &rootX, &rootY, &x, &y, &xstate )) break; -@@ -1806,7 +1816,7 @@ void move_resize_window( HWND hwnd, int dir ) +@@ -1629,7 +1639,7 @@ void move_resize_window( HWND hwnd, int dir ) input.u.mi.dwFlags = button_up_flags[button - 1] | MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE; input.u.mi.time = NtGetTickCount(); input.u.mi.dwExtraInfo = 0; @@ -112,7 +112,7 @@ index bb9807bf850..919cc8c7fb8 100644 } while (NtUserPeekMessage( &msg, 0, 0, 0, PM_REMOVE )) -@@ -2018,6 +2028,7 @@ static BOOL map_raw_event_coords( XIRawEvent *event, INPUT *input ) +@@ -1841,6 +1851,7 @@ static BOOL map_raw_event_coords( XIRawEvent *event, INPUT *input ) */ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) { @@ -120,7 +120,7 @@ index bb9807bf850..919cc8c7fb8 100644 XIRawEvent *event = xev->data; RAWINPUT rawinput; INPUT input; -@@ -2037,7 +2048,85 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) +@@ -1860,7 +1871,85 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) input.u.mi.dy = 0; if (!map_raw_event_coords( event, &input )) return FALSE; @@ -207,7 +207,7 @@ index bb9807bf850..919cc8c7fb8 100644 return TRUE; } -@@ -2113,6 +2202,10 @@ BOOL X11DRV_GenericEvent( HWND hwnd, XEvent *xev ) +@@ -1936,6 +2025,10 @@ BOOL X11DRV_GenericEvent( HWND hwnd, XEvent *xev ) case XI_RawMotion: ret = X11DRV_RawMotion( event ); break; @@ -219,10 +219,10 @@ index bb9807bf850..919cc8c7fb8 100644 default: TRACE( "Unhandled event %#x\n", event->evtype ); diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h -index 38cacb4d3d4..fcae7bbc9df 100644 +index d3f74c63df0..a072b01fc7e 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h -@@ -405,6 +405,7 @@ struct x11drv_thread_data +@@ -408,6 +408,7 @@ struct x11drv_thread_data XIValuatorClassInfo x_valuator; XIValuatorClassInfo y_valuator; int xi2_core_pointer; /* XInput2 core pointer id */ @@ -231,10 +231,10 @@ index 38cacb4d3d4..fcae7bbc9df 100644 }; diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c -index e449530749e..42de6c0e7a7 100644 +index fbff380c2b0..b434e03c8fd 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c -@@ -728,6 +728,8 @@ void X11DRV_ThreadDetach(void) +@@ -725,6 +725,8 @@ void X11DRV_ThreadDetach(void) if (data) { vulkan_thread_detach(); @@ -243,7 +243,7 @@ index e449530749e..42de6c0e7a7 100644 if (data->xim) XCloseIM( data->xim ); if (data->font_set) XFreeFontSet( data->display, data->font_set ); XCloseDisplay( data->display ); -@@ -796,6 +798,8 @@ struct x11drv_thread_data *x11drv_init_thread_data(void) +@@ -793,6 +795,8 @@ struct x11drv_thread_data *x11drv_init_thread_data(void) if (use_xim) xim_thread_attach( data ); x11drv_xinput_init(); @@ -253,5 +253,5 @@ index e449530749e..42de6c0e7a7 100644 return data; } -- -2.40.0 +2.40.1 diff --git a/staging/upstream-commit b/staging/upstream-commit index 4cb7d221..50315429 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -c7431990d815e664cf22267142b76cc59f21d192 +766448f8ffe51b83105bd0795a5cbc7b8f7c8894