You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against 2d6b0b67d91b6433744ec859b10b8ee8eb4a37b3.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
From 9b3b49acf05b15eb533beb846e920bfcbc49094c Mon Sep 17 00:00:00 2001
|
||||
From 3d61d04751da0d7267d83ddc374e0f7be550348e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Mon, 11 Nov 2019 18:35:18 +0100
|
||||
Subject: [PATCH] server: Add HID input message type to send_hardware_message
|
||||
@@ -9,15 +9,15 @@ Subject: [PATCH] server: Add HID input message type to send_hardware_message
|
||||
dlls/user32/rawinput.c | 60 ++++++++++++++++++++++++++++++++++++--
|
||||
dlls/user32/user_private.h | 2 ++
|
||||
server/protocol.def | 26 +++++++++++++++--
|
||||
server/queue.c | 58 +++++++++++++++++++++++++++++++-----
|
||||
server/queue.c | 60 ++++++++++++++++++++++++++++++++------
|
||||
server/trace.c | 10 +++++--
|
||||
6 files changed, 143 insertions(+), 17 deletions(-)
|
||||
6 files changed, 144 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
|
||||
index 4434f4b0c2a..7ae865a135c 100644
|
||||
index f7ce262f90d..01d1a0eed97 100644
|
||||
--- a/dlls/user32/message.c
|
||||
+++ b/dlls/user32/message.c
|
||||
@@ -3238,10 +3238,10 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags )
|
||||
@@ -3240,10 +3240,10 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags )
|
||||
{
|
||||
req->win = wine_server_user_handle( hwnd );
|
||||
req->flags = flags;
|
||||
@@ -29,7 +29,7 @@ index 4434f4b0c2a..7ae865a135c 100644
|
||||
req->input.mouse.x = input->u.mi.dx;
|
||||
req->input.mouse.y = input->u.mi.dy;
|
||||
req->input.mouse.data = input->u.mi.mouseData;
|
||||
@@ -3250,6 +3250,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags )
|
||||
@@ -3252,6 +3252,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags )
|
||||
req->input.mouse.info = input->u.mi.dwExtraInfo;
|
||||
break;
|
||||
case INPUT_KEYBOARD:
|
||||
@@ -37,7 +37,7 @@ index 4434f4b0c2a..7ae865a135c 100644
|
||||
req->input.kbd.vkey = input->u.ki.wVk;
|
||||
req->input.kbd.scan = input->u.ki.wScan;
|
||||
req->input.kbd.flags = input->u.ki.dwFlags;
|
||||
@@ -3257,6 +3258,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags )
|
||||
@@ -3259,6 +3260,7 @@ NTSTATUS send_hardware_message( HWND hwnd, const INPUT *input, UINT flags )
|
||||
req->input.kbd.info = input->u.ki.dwExtraInfo;
|
||||
break;
|
||||
case INPUT_HARDWARE:
|
||||
@@ -174,7 +174,7 @@ index 7761a1ceb4f..bf13e81762a 100644
|
||||
+
|
||||
#endif /* __WINE_USER_PRIVATE_H */
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 5aed1d19b8e..2efaa3336e4 100644
|
||||
index 140d94ea036..a032f9aa507 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -312,6 +312,13 @@ struct hardware_msg_data
|
||||
@@ -234,7 +234,7 @@ index 5aed1d19b8e..2efaa3336e4 100644
|
||||
|
||||
typedef union
|
||||
{
|
||||
@@ -2048,6 +2067,7 @@ enum message_type
|
||||
@@ -2044,6 +2063,7 @@ enum message_type
|
||||
user_handle_t win; /* window handle */
|
||||
hw_input_t input; /* input data */
|
||||
unsigned int flags; /* flags (see below) */
|
||||
@@ -243,10 +243,10 @@ index 5aed1d19b8e..2efaa3336e4 100644
|
||||
int wait; /* do we need to wait for a reply? */
|
||||
int prev_x; /* previous cursor position */
|
||||
diff --git a/server/queue.c b/server/queue.c
|
||||
index 1cdecd9ef26..43e488eac70 100644
|
||||
index f39cf19ecd7..1b9d66b847e 100644
|
||||
--- a/server/queue.c
|
||||
+++ b/server/queue.c
|
||||
@@ -1590,7 +1590,7 @@ static int send_hook_ll_message( struct desktop *desktop, struct message *hardwa
|
||||
@@ -1608,7 +1608,7 @@ static int send_hook_ll_message( struct desktop *desktop, struct message *hardwa
|
||||
struct msg_queue *queue;
|
||||
struct message *msg;
|
||||
timeout_t timeout = 2000 * -10000; /* FIXME: load from registry */
|
||||
@@ -255,7 +255,7 @@ index 1cdecd9ef26..43e488eac70 100644
|
||||
|
||||
if (!(hook_thread = get_first_global_hook( id ))) return 0;
|
||||
if (!(queue = hook_thread->queue)) return 0;
|
||||
@@ -1608,7 +1608,7 @@ static int send_hook_ll_message( struct desktop *desktop, struct message *hardwa
|
||||
@@ -1626,7 +1626,7 @@ static int send_hook_ll_message( struct desktop *desktop, struct message *hardwa
|
||||
msg->data_size = hardware_msg->data_size;
|
||||
msg->result = NULL;
|
||||
|
||||
@@ -264,7 +264,7 @@ index 1cdecd9ef26..43e488eac70 100644
|
||||
{
|
||||
unsigned short vkey = input->kbd.vkey;
|
||||
if (input->kbd.flags & KEYEVENTF_UNICODE) vkey = VK_PACKET;
|
||||
@@ -1644,6 +1644,8 @@ struct rawinput_message
|
||||
@@ -1662,6 +1662,8 @@ struct rawinput_message
|
||||
struct desktop *desktop;
|
||||
struct hw_msg_source source;
|
||||
unsigned int time;
|
||||
@@ -273,7 +273,7 @@ index 1cdecd9ef26..43e488eac70 100644
|
||||
struct hardware_msg_data data;
|
||||
const void *extra;
|
||||
data_size_t extra_len;
|
||||
@@ -1653,6 +1655,7 @@ struct rawinput_message
|
||||
@@ -1671,6 +1673,7 @@ struct rawinput_message
|
||||
static int queue_rawinput_message( struct process* process, void *arg )
|
||||
{
|
||||
const struct rawinput_message* raw_msg = arg;
|
||||
@@ -281,7 +281,7 @@ index 1cdecd9ef26..43e488eac70 100644
|
||||
const struct rawinput_device *device = NULL;
|
||||
struct desktop *target_desktop = NULL, *desktop = NULL;
|
||||
struct thread *target_thread = NULL, *foreground = NULL;
|
||||
@@ -1664,6 +1667,8 @@ static int queue_rawinput_message( struct process* process, void *arg )
|
||||
@@ -1682,6 +1685,8 @@ static int queue_rawinput_message( struct process* process, void *arg )
|
||||
device = process->rawinput_mouse;
|
||||
else if (raw_msg->data.rawinput.type == RIM_TYPEKEYBOARD)
|
||||
device = process->rawinput_kbd;
|
||||
@@ -290,7 +290,7 @@ index 1cdecd9ef26..43e488eac70 100644
|
||||
if (!device) return 0;
|
||||
|
||||
if (raw_msg->desktop) desktop = (struct desktop *)grab_object( raw_msg->desktop );
|
||||
@@ -1982,6 +1987,37 @@ static void queue_custom_hardware_message( struct desktop *desktop, user_handle_
|
||||
@@ -2000,6 +2005,37 @@ static void queue_custom_hardware_message( struct desktop *desktop, user_handle_
|
||||
queue_hardware_message( desktop, msg, 1 );
|
||||
}
|
||||
|
||||
@@ -328,7 +328,7 @@ index 1cdecd9ef26..43e488eac70 100644
|
||||
/* check message filter for a hardware message */
|
||||
static int check_hw_message_filter( user_handle_t win, unsigned int msg_code,
|
||||
user_handle_t filter_win, unsigned int first, unsigned int last )
|
||||
@@ -2487,15 +2523,18 @@ DECL_HANDLER(send_hardware_message)
|
||||
@@ -2505,15 +2541,18 @@ DECL_HANDLER(send_hardware_message)
|
||||
|
||||
switch (req->input.type)
|
||||
{
|
||||
@@ -350,7 +350,7 @@ index 1cdecd9ef26..43e488eac70 100644
|
||||
default:
|
||||
set_error( STATUS_INVALID_PARAMETER );
|
||||
}
|
||||
@@ -3267,20 +3306,23 @@ DECL_HANDLER(get_rawinput_buffer)
|
||||
@@ -3295,14 +3334,17 @@ DECL_HANDLER(get_rawinput_buffer)
|
||||
{
|
||||
struct message *msg = LIST_ENTRY( ptr, struct message, entry );
|
||||
struct hardware_msg_data *data = msg->data;
|
||||
@@ -364,7 +364,15 @@ index 1cdecd9ef26..43e488eac70 100644
|
||||
next_size = req->rawinput_size;
|
||||
if (size + next_size > req->buffer_size) break;
|
||||
- if (cur + sizeof(*data) > buf + get_reply_max_size()) break;
|
||||
- if (cur + sizeof(*data) > buf + buf_size)
|
||||
+ if (cur + msg_size > buf + get_reply_max_size()) break;
|
||||
+ if (cur + msg_size > buf + buf_size)
|
||||
{
|
||||
buf_size += buf_size / 2;
|
||||
if (!(tmp = realloc( buf, buf_size )))
|
||||
@@ -3314,12 +3356,12 @@ DECL_HANDLER(get_rawinput_buffer)
|
||||
buf = tmp;
|
||||
}
|
||||
|
||||
- memcpy(cur, data, sizeof(*data));
|
||||
+ memcpy(cur, data, msg_size);
|
||||
@@ -378,10 +386,10 @@ index 1cdecd9ef26..43e488eac70 100644
|
||||
}
|
||||
|
||||
diff --git a/server/trace.c b/server/trace.c
|
||||
index f217bb1fa90..687a9f8e5d9 100644
|
||||
index c6ef3fb9773..4434bb1893f 100644
|
||||
--- a/server/trace.c
|
||||
+++ b/server/trace.c
|
||||
@@ -399,24 +399,28 @@ static void dump_hw_input( const char *prefix, const hw_input_t *input )
|
||||
@@ -398,24 +398,28 @@ static void dump_hw_input( const char *prefix, const hw_input_t *input )
|
||||
{
|
||||
switch (input->type)
|
||||
{
|
||||
@@ -414,5 +422,5 @@ index f217bb1fa90..687a9f8e5d9 100644
|
||||
fprintf( stderr, "%s{type=%04x}", prefix, input->type );
|
||||
break;
|
||||
--
|
||||
2.28.0
|
||||
2.20.1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user