diff --git a/patches/mountmgr-DosDevices/0001-mountmgr.sys-Write-usable-device-paths-into-HKLM-SYS.patch b/patches/mountmgr-DosDevices/0001-mountmgr.sys-Write-usable-device-paths-into-HKLM-SYS.patch index d701a63e..6e91a9a1 100644 --- a/patches/mountmgr-DosDevices/0001-mountmgr.sys-Write-usable-device-paths-into-HKLM-SYS.patch +++ b/patches/mountmgr-DosDevices/0001-mountmgr.sys-Write-usable-device-paths-into-HKLM-SYS.patch @@ -1,4 +1,4 @@ -From 13f6a02494570aea6cda94cb479052bbf3d9bd72 Mon Sep 17 00:00:00 2001 +From 281a1753e7a075b7b3bdbba2692a1da5bec081f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Mon, 30 Mar 2015 04:01:51 +0200 Subject: [PATCH] mountmgr.sys: Write usable device paths into @@ -15,10 +15,10 @@ Based on a patch by Bernhard Übelacker. 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/dlls/mountmgr.sys/device.c b/dlls/mountmgr.sys/device.c -index 6b2187c0991..b15a8ea8cf7 100644 +index 8fd9dc0757e..f40f70b06d7 100644 --- a/dlls/mountmgr.sys/device.c +++ b/dlls/mountmgr.sys/device.c -@@ -1063,8 +1063,8 @@ static NTSTATUS set_volume_info( struct volume *volume, struct dos_drive *drive, +@@ -1045,8 +1045,8 @@ static NTSTATUS set_volume_info( struct volume *volume, struct dos_drive *drive, id = disk_device->unix_mount; id_len = strlen( disk_device->unix_mount ) + 1; } @@ -30,7 +30,7 @@ index 6b2187c0991..b15a8ea8cf7 100644 return STATUS_SUCCESS; } diff --git a/dlls/mountmgr.sys/mountmgr.c b/dlls/mountmgr.sys/mountmgr.c -index b67082229f6..47a71e90325 100644 +index 9f72eedb33b..19cb71b4eb6 100644 --- a/dlls/mountmgr.sys/mountmgr.c +++ b/dlls/mountmgr.sys/mountmgr.c @@ -46,14 +46,21 @@ struct mount_point @@ -41,9 +41,9 @@ index b67082229f6..47a71e90325 100644 +void set_mount_point_id( struct mount_point *mount, const void *id, unsigned int id_len, int drive ) { + WCHAR logicalW[] = {'\\','\\','.','\\','a',':',0}; - RtlFreeHeap( GetProcessHeap(), 0, mount->id ); + free( mount->id ); mount->id_len = max( MIN_ID_LEN, id_len ); - if ((mount->id = RtlAllocateHeap( GetProcessHeap(), HEAP_ZERO_MEMORY, mount->id_len ))) + if ((mount->id = calloc( mount->id_len, 1 ))) { memcpy( mount->id, id, id_len ); - RegSetValueExW( mount_key, mount->link.Buffer, 0, REG_BINARY, mount->id, mount->id_len ); diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 42e61a39..0ab75bec 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "6905b76b9400209ded97983ceca9f9c15de22d98" + echo "30c33c2f982fc8c0ef6d97683c6581ebddd46814" } # Show version information 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 a128f56e..843d3130 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 fe10cdceff9ca19e82823e85d3d90198dadb2644 Mon Sep 17 00:00:00 2001 +From aaf6709946884d010891d213b4a7f3f4b22f4ee5 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 @@ -20,7 +20,7 @@ __wine_send_input with INPUT_HARDWARE input type and a rawinput. 9 files changed, 26 insertions(+), 15 deletions(-) diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c -index cd8f3a49ecd..eee40d55f12 100644 +index bc451cdd5d6..4f62fff1b83 100644 --- a/dlls/win32u/input.c +++ b/dlls/win32u/input.c @@ -131,6 +131,7 @@ UINT WINAPI NtUserSendInput( UINT count, INPUT *inputs, int size ) @@ -41,10 +41,10 @@ index cd8f3a49ecd..eee40d55f12 100644 case INPUT_HARDWARE: RtlSetLastWin32Error( ERROR_CALL_NOT_IMPLEMENTED ); diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c -index b940af90c88..9070ae3d562 100644 +index 0c6e2f262ff..921472646af 100644 --- a/dlls/win32u/message.c +++ b/dlls/win32u/message.c -@@ -2602,7 +2602,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, const RAWINPUT *r +@@ -2605,7 +2605,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; @@ -53,7 +53,7 @@ index b940af90c88..9070ae3d562 100644 break; case INPUT_KEYBOARD: req->input.kbd.vkey = input->ki.wVk; -@@ -2610,7 +2610,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, const RAWINPUT *r +@@ -2613,7 +2613,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; @@ -210,18 +210,18 @@ index 5b1b892de32..622024dcdd9 100644 diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c -index 627e7fef7cc..5607d40087b 100644 +index 82a82032957..17e88f87982 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c -@@ -749,6 +749,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 ) +@@ -750,6 +750,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU { 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 +@@ -766,7 +767,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; } @@ -230,7 +230,7 @@ index 627e7fef7cc..5607d40087b 100644 return; } -@@ -805,7 +806,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU +@@ -807,7 +808,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU SERVER_END_REQ; } @@ -239,7 +239,7 @@ index 627e7fef7cc..5607d40087b 100644 } #ifdef SONAME_LIBXCURSOR -@@ -1788,6 +1789,7 @@ void move_resize_window( HWND hwnd, int dir ) +@@ -1790,6 +1791,7 @@ void move_resize_window( HWND hwnd, int dir ) { MSG msg; INPUT input; @@ -247,7 +247,7 @@ index 627e7fef7cc..5607d40087b 100644 int x, y, rootX, rootY; if (!XQueryPointer( display, root_window, &root, &child, &rootX, &rootY, &x, &y, &xstate )) break; -@@ -1803,7 +1805,7 @@ void move_resize_window( HWND hwnd, int dir ) +@@ -1805,7 +1807,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; @@ -256,7 +256,7 @@ index 627e7fef7cc..5607d40087b 100644 } while (NtUserPeekMessage( &msg, 0, 0, 0, PM_REMOVE )) -@@ -2017,6 +2019,7 @@ static BOOL map_raw_event_coords( XIRawEvent *event, INPUT *input ) +@@ -2018,6 +2020,7 @@ static BOOL map_raw_event_coords( XIRawEvent *event, INPUT *input ) static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) { XIRawEvent *event = xev->data; @@ -264,7 +264,7 @@ index 627e7fef7cc..5607d40087b 100644 INPUT input; if (broken_rawevents && is_old_motion_event( xev->serial )) -@@ -2034,7 +2037,7 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) +@@ -2035,7 +2038,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 7499c08e..1b91ddb3 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 5aa73b7dea3865a8a168a165ce99d54d094071ea Mon Sep 17 00:00:00 2001 +From 43a54849310a49babfee6c7ea08d92c4535514c3 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 @@ -9,16 +9,16 @@ to trigger low-level hooks callbacks when clipping cursor. This is for instance used in our dinput implementation. --- dlls/winex11.drv/event.c | 10 +++- - dlls/winex11.drv/mouse.c | 106 ++++++++++++++++++++++++++++++--- + dlls/winex11.drv/mouse.c | 105 +++++++++++++++++++++++++++++++-- dlls/winex11.drv/x11drv.h | 1 + dlls/winex11.drv/x11drv_main.c | 4 ++ - 4 files changed, 112 insertions(+), 9 deletions(-) + 4 files changed, 112 insertions(+), 8 deletions(-) diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c -index fe1547bbc23..8fc2a6a4b6c 100644 +index c8833671f12..a7bd4312737 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c -@@ -322,6 +322,10 @@ static enum event_merge_action merge_raw_motion_events( XIRawEvent *prev, XIRawE +@@ -320,6 +320,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 fe1547bbc23..8fc2a6a4b6c 100644 switch (prev->type) { case ConfigureNotify: -@@ -353,19 +357,21 @@ static enum event_merge_action merge_events( XEvent *prev, XEvent *next ) +@@ -351,19 +355,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 fe1547bbc23..8fc2a6a4b6c 100644 #endif } diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c -index 49048c83fed..f020f4fe6a5 100644 +index 17e88f87982..8547553215c 100644 --- a/dlls/winex11.drv/mouse.c +++ b/dlls/winex11.drv/mouse.c -@@ -412,7 +412,18 @@ void x11drv_xinput_enable( Display *display, Window window, long event_mask ) +@@ -413,7 +413,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,15 +77,7 @@ index 49048c83fed..f020f4fe6a5 100644 pXISelectEvents( display, DefaultRootWindow( display ), &mask, 1 ); -@@ -745,7 +756,6 @@ 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; -- RAWINPUT rawinput; - - input->type = INPUT_MOUSE; - -@@ -762,7 +772,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU +@@ -767,7 +778,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; } @@ -94,7 +86,7 @@ index 49048c83fed..f020f4fe6a5 100644 return; } -@@ -802,7 +812,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU +@@ -808,7 +819,7 @@ static void send_mouse_input( HWND hwnd, Window window, unsigned int state, INPU SERVER_END_REQ; } @@ -103,7 +95,7 @@ index 49048c83fed..f020f4fe6a5 100644 } #ifdef SONAME_LIBXCURSOR -@@ -1760,7 +1770,6 @@ void move_resize_window( HWND hwnd, int dir ) +@@ -1791,7 +1802,6 @@ void move_resize_window( HWND hwnd, int dir ) { MSG msg; INPUT input; @@ -111,7 +103,7 @@ index 49048c83fed..f020f4fe6a5 100644 int x, y, rootX, rootY; if (!XQueryPointer( display, root_window, &root, &child, &rootX, &rootY, &x, &y, &xstate )) break; -@@ -1776,7 +1785,7 @@ void move_resize_window( HWND hwnd, int dir ) +@@ -1807,7 +1817,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; @@ -120,7 +112,7 @@ index 49048c83fed..f020f4fe6a5 100644 } while (NtUserPeekMessage( &msg, 0, 0, 0, PM_REMOVE )) -@@ -1988,6 +1997,7 @@ static BOOL map_raw_event_coords( XIRawEvent *event, INPUT *input ) +@@ -2019,6 +2029,7 @@ static BOOL map_raw_event_coords( XIRawEvent *event, INPUT *input ) */ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) { @@ -128,7 +120,7 @@ index 49048c83fed..f020f4fe6a5 100644 XIRawEvent *event = xev->data; RAWINPUT rawinput; INPUT input; -@@ -2007,7 +2017,85 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) +@@ -2038,7 +2049,85 @@ static BOOL X11DRV_RawMotion( XGenericEventCookie *xev ) input.u.mi.dy = 0; if (!map_raw_event_coords( event, &input )) return FALSE; @@ -215,7 +207,7 @@ index 49048c83fed..f020f4fe6a5 100644 return TRUE; } -@@ -2083,6 +2171,10 @@ BOOL X11DRV_GenericEvent( HWND hwnd, XEvent *xev ) +@@ -2114,6 +2203,10 @@ BOOL X11DRV_GenericEvent( HWND hwnd, XEvent *xev ) case XI_RawMotion: ret = X11DRV_RawMotion( event ); break; @@ -227,10 +219,10 @@ index 49048c83fed..f020f4fe6a5 100644 default: TRACE( "Unhandled event %#x\n", event->evtype ); diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h -index f2ae3ecdfa3..c78306581ce 100644 +index 5f1a5ecaecd..7325d3ff9aa 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h -@@ -402,6 +402,7 @@ struct x11drv_thread_data +@@ -404,6 +404,7 @@ struct x11drv_thread_data XIValuatorClassInfo x_valuator; XIValuatorClassInfo y_valuator; int xi2_core_pointer; /* XInput2 core pointer id */ @@ -239,10 +231,10 @@ index f2ae3ecdfa3..c78306581ce 100644 }; diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c -index 33814d1f6fb..a8ef68f489d 100644 +index 6707a64bcf6..c984639dbf9 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c -@@ -704,6 +704,8 @@ void X11DRV_ThreadDetach(void) +@@ -733,6 +733,8 @@ void X11DRV_ThreadDetach(void) if (data) { vulkan_thread_detach(); @@ -251,7 +243,7 @@ index 33814d1f6fb..a8ef68f489d 100644 if (data->xim) XCloseIM( data->xim ); if (data->font_set) XFreeFontSet( data->display, data->font_set ); XCloseDisplay( data->display ); -@@ -775,6 +777,8 @@ struct x11drv_thread_data *x11drv_init_thread_data(void) +@@ -804,6 +806,8 @@ struct x11drv_thread_data *x11drv_init_thread_data(void) if (use_xim) X11DRV_SetupXIM(); x11drv_xinput_init(); @@ -261,5 +253,5 @@ index 33814d1f6fb..a8ef68f489d 100644 return data; } -- -2.35.1 +2.38.1 diff --git a/staging/upstream-commit b/staging/upstream-commit index b307a07d..2530c7d4 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -6905b76b9400209ded97983ceca9f9c15de22d98 +30c33c2f982fc8c0ef6d97683c6581ebddd46814