Rebase against 30c33c2f982fc8c0ef6d97683c6581ebddd46814.

This commit is contained in:
Alistair Leslie-Hughes
2022-12-01 11:07:36 +11:00
parent d007ef33ee
commit 2f85e74399
5 changed files with 43 additions and 51 deletions

View File

@ -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?= <rbernon@codeweavers.com>
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;

View File

@ -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?= <rbernon@codeweavers.com>
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