Rebase against f9741837a3bff3a912442695b4f7c3f5efbef557.

This commit is contained in:
Alistair Leslie-Hughes
2025-05-09 13:30:18 +10:00
parent abf4b4db07
commit 86a7c93cdd
5 changed files with 82 additions and 90 deletions

View File

@@ -1,4 +1,4 @@
From 2c353379e4e6da08174cc6bc7b0fd95f26c2d16e Mon Sep 17 00:00:00 2001
From 402e92f4ed878da989eff02544d81a0965a0eda7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
Date: Mon, 26 Aug 2019 14:37:20 +0200
Subject: [PATCH] server: Add send_hardware_message flags for rawinput
@@ -6,15 +6,15 @@ Subject: [PATCH] server: Add send_hardware_message flags for rawinput
---
include/ntuser.h | 4 ++++
server/protocol.def | 5 ++---
server/queue.c | 26 +++++++++++++++-----------
3 files changed, 21 insertions(+), 14 deletions(-)
server/protocol.def | 3 +--
server/queue.c | 20 ++++++++++++--------
3 files changed, 17 insertions(+), 10 deletions(-)
diff --git a/include/ntuser.h b/include/ntuser.h
index 3d981927395..f20945f4122 100644
index 9922c1da4b2..58407b55fd5 100644
--- a/include/ntuser.h
+++ b/include/ntuser.h
@@ -1613,6 +1613,10 @@ struct hid_packet
@@ -1555,6 +1555,10 @@ struct hid_packet
C_ASSERT(sizeof(struct hid_packet) == offsetof(struct hid_packet, data[0]));
@@ -26,21 +26,19 @@ index 3d981927395..f20945f4122 100644
{
UINT flags;
diff --git a/server/protocol.def b/server/protocol.def
index ae53a65db64..1fcace0d131 100644
index 483fcac1392..f7c65b265e6 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -2262,8 +2262,8 @@ enum message_type
/* Send a hardware message to a thread queue */
@@ -2328,7 +2328,7 @@ enum message_type
@REQ(send_hardware_message)
user_handle_t win; /* window handle */
- union hw_input input; /* input data */
union hw_input input; /* input data */
- unsigned int flags; /* flags (see below) */
+ union hw_input input; /* input data */
+ unsigned int flags; /* flags (see ntuser.h) */
VARARG(report,bytes); /* HID report data */
@REPLY
int wait; /* do we need to wait for a reply? */
@@ -2272,7 +2272,6 @@ enum message_type
@@ -2337,7 +2337,6 @@ enum message_type
int new_x; /* new cursor position */
int new_y;
@END
@@ -49,21 +47,19 @@ index ae53a65db64..1fcace0d131 100644
/* Get a message from the current queue */
diff --git a/server/queue.c b/server/queue.c
index 94169a57db6..9695eceff28 100644
index c9ef7aef80a..c4987eb1a2e 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -2243,8 +2243,8 @@ static void dispatch_rawinput_message( struct desktop *desktop, struct rawinput_
}
@@ -2285,7 +2285,7 @@ static void dispatch_rawinput_message( struct desktop *desktop, struct rawinput_
/* queue a hardware message for a mouse event */
-static int queue_mouse_message( struct desktop *desktop, user_handle_t win, const union hw_input *input,
static int queue_mouse_message( struct desktop *desktop, user_handle_t win, const union hw_input *input,
- unsigned int origin, struct msg_queue *sender )
+static int queue_mouse_message( struct desktop *desktop, user_handle_t win, const union hw_input *input,
+ unsigned int origin, struct msg_queue *sender, unsigned int send_flags )
{
const desktop_shm_t *desktop_shm = desktop->shared;
desktop_shm_t *desktop_shm = desktop->shared;
struct hardware_msg_data *msg_data;
@@ -2305,7 +2305,7 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons
@@ -2345,7 +2345,7 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons
y = desktop_shm->cursor.y;
}
@@ -72,7 +68,7 @@ index 94169a57db6..9695eceff28 100644
{
memset( &raw_msg, 0, sizeof(raw_msg) );
raw_msg.foreground = foreground;
@@ -2320,6 +2320,8 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons
@@ -2360,6 +2360,8 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons
release_object( foreground );
}
@@ -81,13 +77,11 @@ index 94169a57db6..9695eceff28 100644
for (i = 0; i < ARRAY_SIZE( messages ); i++)
{
if (!messages[i]) continue;
@@ -2349,15 +2351,15 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons
return wait;
@@ -2390,14 +2392,14 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons
}
-static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, const union hw_input *input,
static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, const union hw_input *input,
- unsigned int origin, struct msg_queue *sender, int repeat );
+static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, const union hw_input *input,
+ unsigned int origin, struct msg_queue *sender, int repeat, unsigned int send_flags);
static void key_repeat_timeout( void *private )
@@ -100,18 +94,16 @@ index 94169a57db6..9695eceff28 100644
}
static void stop_key_repeat( struct desktop *desktop )
@@ -2369,8 +2371,8 @@ static void stop_key_repeat( struct desktop *desktop )
}
@@ -2410,7 +2412,7 @@ static void stop_key_repeat( struct desktop *desktop )
/* queue a hardware message for a keyboard event */
-static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, const union hw_input *input,
static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, const union hw_input *input,
- unsigned int origin, struct msg_queue *sender, int repeat )
+static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, const union hw_input *input,
+ unsigned int origin, struct msg_queue *sender, int repeat, unsigned int send_flags )
{
const desktop_shm_t *desktop_shm = desktop->shared;
desktop_shm_t *desktop_shm = desktop->shared;
struct hw_msg_source source = { IMDT_KEYBOARD, origin };
@@ -2493,7 +2495,7 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c
@@ -2533,7 +2535,7 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c
}
}
@@ -120,7 +112,7 @@ index 94169a57db6..9695eceff28 100644
{
struct rawinput_message raw_msg = {0};
raw_msg.foreground = foreground;
@@ -2508,6 +2510,8 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c
@@ -2548,6 +2550,8 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c
release_object( foreground );
}
@@ -129,7 +121,7 @@ index 94169a57db6..9695eceff28 100644
if (!(msg = alloc_hardware_message( input->kbd.info, source, time, 0 ))) return 0;
msg_data = msg->data;
@@ -3294,10 +3298,10 @@ DECL_HANDLER(send_hardware_message)
@@ -3344,10 +3348,10 @@ DECL_HANDLER(send_hardware_message)
switch (req->input.type)
{
case INPUT_MOUSE:
@@ -143,5 +135,5 @@ index 94169a57db6..9695eceff28 100644
case INPUT_HARDWARE:
queue_custom_hardware_message( desktop, req->win, origin, &req->input );
--
2.45.2
2.47.2