mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Added patch to improve handling of hooks for normal (non-injected) hardware messages.
This commit is contained in:
parent
8fb3cd2056
commit
3dad3ddae9
@ -333,6 +333,7 @@ patch_enable_all ()
|
||||
enable_server_Stored_ACLs="$1"
|
||||
enable_server_Timestamp_Compat="$1"
|
||||
enable_server_device_manager_destroy="$1"
|
||||
enable_server_send_hardware_message="$1"
|
||||
enable_setupapi_DelReg="$1"
|
||||
enable_setupapi_DiskSpaceList="$1"
|
||||
enable_setupapi_Display_Device="$1"
|
||||
@ -1246,6 +1247,9 @@ patch_enable ()
|
||||
server-device_manager_destroy)
|
||||
enable_server_device_manager_destroy="$2"
|
||||
;;
|
||||
server-send_hardware_message)
|
||||
enable_server_send_hardware_message="$2"
|
||||
;;
|
||||
setupapi-DelReg)
|
||||
enable_setupapi_DelReg="$2"
|
||||
;;
|
||||
@ -7289,6 +7293,21 @@ if test "$enable_server_device_manager_destroy" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset server-send_hardware_message
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#43102] Improve handling of hooks for normal (non-injected) hardware messages
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * server/queue.c
|
||||
# |
|
||||
if test "$enable_server_send_hardware_message" -eq 1; then
|
||||
patch_apply server-send_hardware_message/0001-server-Improve-handling-of-hooks-for-normal-non-inje.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Michael Müller", "server: Improve handling of hooks for normal (non-injected) hardware messages.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset setupapi-DelReg
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
@ -0,0 +1,73 @@
|
||||
From 02879d85a14dd6fff5c473cf38f92dab1305f573 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Tue, 27 Jun 2017 02:08:50 +0200
|
||||
Subject: server: Improve handling of hooks for normal (non-injected) hardware
|
||||
messages.
|
||||
|
||||
---
|
||||
server/queue.c | 14 +++++++-------
|
||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/server/queue.c b/server/queue.c
|
||||
index 941fcb6a307..ee8e5255848 100644
|
||||
--- a/server/queue.c
|
||||
+++ b/server/queue.c
|
||||
@@ -1715,7 +1715,7 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons
|
||||
struct hardware_msg_data *msg_data;
|
||||
struct message *msg;
|
||||
unsigned int i, time, flags;
|
||||
- int wait = 0, x, y;
|
||||
+ int hooked = 0, x, y;
|
||||
|
||||
static const unsigned int messages[] =
|
||||
{
|
||||
@@ -1821,13 +1821,13 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons
|
||||
/* specify a sender only when sending the last message */
|
||||
if (!(flags & ((1 << sizeof(messages)/sizeof(messages[0])) - 1)))
|
||||
{
|
||||
- if (!(wait = send_hook_ll_message( desktop, msg, input, sender )))
|
||||
+ if (!(hooked = send_hook_ll_message( desktop, msg, input, sender )))
|
||||
queue_hardware_message( desktop, msg, 0 );
|
||||
}
|
||||
else if (!send_hook_ll_message( desktop, msg, input, NULL ))
|
||||
queue_hardware_message( desktop, msg, 0 );
|
||||
}
|
||||
- return wait;
|
||||
+ return hooked && sender;
|
||||
}
|
||||
|
||||
/* queue a hardware message for a keyboard event */
|
||||
@@ -1839,7 +1839,7 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c
|
||||
struct message *msg;
|
||||
unsigned char vkey = input->kbd.vkey;
|
||||
unsigned int message_code, time;
|
||||
- int wait;
|
||||
+ int hooked;
|
||||
|
||||
if (!(time = input->kbd.time)) time = get_tick_count();
|
||||
|
||||
@@ -1972,10 +1972,10 @@ static int queue_keyboard_message( struct desktop *desktop, user_handle_t win, c
|
||||
msg_data->flags |= (flags & (KF_EXTENDED | KF_ALTDOWN | KF_UP)) >> 8;
|
||||
}
|
||||
|
||||
- if (!(wait = send_hook_ll_message( desktop, msg, input, sender )))
|
||||
+ if (!(hooked = send_hook_ll_message( desktop, msg, input, sender )))
|
||||
queue_hardware_message( desktop, msg, 1 );
|
||||
|
||||
- return wait;
|
||||
+ return hooked && sender;
|
||||
}
|
||||
|
||||
/* queue a hardware message for a custom type of event */
|
||||
@@ -2493,7 +2493,7 @@ DECL_HANDLER(send_hardware_message)
|
||||
{
|
||||
struct thread *thread = NULL;
|
||||
struct desktop *desktop;
|
||||
- struct msg_queue *sender = get_current_queue();
|
||||
+ struct msg_queue *sender = (req->flags & SEND_HWMSG_INJECTED) ? get_current_queue() : NULL;
|
||||
data_size_t size = min( 256, get_reply_max_size() );
|
||||
|
||||
if (!(desktop = get_thread_desktop( current, 0 ))) return;
|
||||
--
|
||||
2.13.1
|
||||
|
1
patches/server-send_hardware_message/definition
Normal file
1
patches/server-send_hardware_message/definition
Normal file
@ -0,0 +1 @@
|
||||
Fixes: [43102] Improve handling of hooks for normal (non-injected) hardware messages
|
Loading…
x
Reference in New Issue
Block a user