user32: Don't move mouse hardware messages to other threads queues.
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
index fd82498..b75c7e9 100644
--- a/dlls/user32/message.c
+++ b/dlls/user32/message.c
@@ -2266,13 +2266,12 @@
* Tell the server we have passed the message to the app
* (even though we may end up dropping it later on)
*/
-static void accept_hardware_message( UINT hw_id, BOOL remove, HWND new_hwnd )
+static void accept_hardware_message( UINT hw_id, BOOL remove )
{
SERVER_START_REQ( accept_hardware_message )
{
req->hw_id = hw_id;
req->remove = remove;
- req->new_win = wine_server_user_handle( new_hwnd );
if (wine_server_call( req ))
FIXME("Failed to reply to MSG_HARDWARE message. Message may not be removed from queue.\n");
}
@@ -2460,10 +2459,10 @@
{
/* skip this message */
HOOK_CallHooks( WH_CBT, HCBT_KEYSKIPPED, LOWORD(msg->wParam), msg->lParam, TRUE );
- accept_hardware_message( hw_id, TRUE, 0 );
+ accept_hardware_message( hw_id, TRUE );
return FALSE;
}
- accept_hardware_message( hw_id, remove, 0 );
+ accept_hardware_message( hw_id, remove );
if ( remove && msg->message == WM_KEYDOWN )
if (ImmProcessKey(msg->hwnd, GetKeyboardLayout(0), msg->wParam, msg->lParam, 0) )
@@ -2507,7 +2506,7 @@
if (!msg->hwnd || !WIN_IsCurrentThread( msg->hwnd ))
{
- accept_hardware_message( hw_id, TRUE, msg->hwnd );
+ accept_hardware_message( hw_id, TRUE );
return FALSE;
}
@@ -2596,7 +2595,7 @@
hook.wHitTestCode = hittest;
hook.dwExtraInfo = extra_info;
HOOK_CallHooks( WH_CBT, HCBT_CLICKSKIPPED, message, (LPARAM)&hook, TRUE );
- accept_hardware_message( hw_id, TRUE, 0 );
+ accept_hardware_message( hw_id, TRUE );
return FALSE;
}
@@ -2604,11 +2603,11 @@
{
SendMessageW( msg->hwnd, WM_SETCURSOR, (WPARAM)msg->hwnd,
MAKELONG( hittest, msg->message ));
- accept_hardware_message( hw_id, TRUE, 0 );
+ accept_hardware_message( hw_id, TRUE );
return FALSE;
}
- accept_hardware_message( hw_id, remove, 0 );
+ accept_hardware_message( hw_id, remove );
if (!remove || info.hwndCapture)
{
diff --git a/server/protocol.def b/server/protocol.def
index c9270ea..4854e3d 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -2156,7 +2156,6 @@
@REQ(accept_hardware_message)
unsigned int hw_id; /* id of the hardware message */
int remove; /* should we remove the message? */
- user_handle_t new_win; /* new destination window for current message */
@END
diff --git a/server/queue.c b/server/queue.c
index 71dfc11..5f87203 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -1281,7 +1281,7 @@
/* release the hardware message currently being processed by the given thread */
static void release_hardware_message( struct msg_queue *queue, unsigned int hw_id,
- int remove, user_handle_t new_win )
+ int remove )
{
struct thread_input *input = queue->input;
struct message *msg;
@@ -1293,7 +1293,7 @@
if (&msg->entry == &input->msg_list) return; /* not found */
/* clear the queue bit for that message */
- if (remove || new_win)
+ if (remove)
{
struct message *other;
int clr_bit;
@@ -1308,32 +1308,7 @@
}
}
if (clr_bit) clear_queue_bits( queue, clr_bit );
- }
- if (new_win) /* set the new window */
- {
- struct thread *owner = get_window_thread( new_win );
- if (owner)
- {
- msg->win = new_win;
- if (owner->queue->input != input)
- {
- list_remove( &msg->entry );
- if (merge_message( owner->queue->input, msg ))
- {
- free_message( msg );
- release_object( owner );
- return;
- }
- list_add_tail( &owner->queue->input->msg_list, &msg->entry );
- }
- set_queue_bits( owner->queue, get_hardware_msg_bit( msg ));
- remove = 0;
- release_object( owner );
- }
- }
- if (remove)
- {
update_input_key_state( input->desktop, input->keystate, msg );
list_remove( &msg->entry );
free_message( msg );
@@ -1980,7 +1955,7 @@
data->hw_id = msg->unique_id;
set_reply_data( msg->data, msg->data_size );
if (msg->msg == WM_INPUT && (flags & PM_REMOVE))
- release_hardware_message( current->queue, data->hw_id, 1, 0 );
+ release_hardware_message( current->queue, data->hw_id, 1 );
return 1;
}
/* nothing found, clear the hardware queue bits */
@@ -2471,7 +2446,7 @@
DECL_HANDLER(accept_hardware_message)
{
if (current->queue)
- release_hardware_message( current->queue, req->hw_id, req->remove, req->new_win );
+ release_hardware_message( current->queue, req->hw_id, req->remove );
else
set_error( STATUS_ACCESS_DENIED );
}