Commit 54efd8a4 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

server: Only remove WM_INPUT messages from the queue if PM_REMOVE is set.

parent b8feef88
...@@ -1888,7 +1888,8 @@ static int check_hw_message_filter( user_handle_t win, unsigned int msg_code, ...@@ -1888,7 +1888,8 @@ static int check_hw_message_filter( user_handle_t win, unsigned int msg_code,
/* find a hardware message for the given queue */ /* find a hardware message for the given queue */
static int get_hardware_message( struct thread *thread, unsigned int hw_id, user_handle_t filter_win, static int get_hardware_message( struct thread *thread, unsigned int hw_id, user_handle_t filter_win,
unsigned int first, unsigned int last, struct get_message_reply *reply ) unsigned int first, unsigned int last, unsigned int flags,
struct get_message_reply *reply )
{ {
struct thread_input *input = thread->queue->input; struct thread_input *input = thread->queue->input;
struct thread *win_thread; struct thread *win_thread;
...@@ -1968,7 +1969,8 @@ static int get_hardware_message( struct thread *thread, unsigned int hw_id, user ...@@ -1968,7 +1969,8 @@ static int get_hardware_message( struct thread *thread, unsigned int hw_id, user
data->hw_id = msg->unique_id; data->hw_id = msg->unique_id;
set_reply_data( msg->data, msg->data_size ); set_reply_data( msg->data, msg->data_size );
if (msg->msg == WM_INPUT) release_hardware_message( current->queue, data->hw_id, 1, 0 ); if (msg->msg == WM_INPUT && (flags & PM_REMOVE))
release_hardware_message( current->queue, data->hw_id, 1, 0 );
return 1; return 1;
} }
/* nothing found, clear the hardware queue bits */ /* nothing found, clear the hardware queue bits */
...@@ -2405,7 +2407,7 @@ DECL_HANDLER(get_message) ...@@ -2405,7 +2407,7 @@ DECL_HANDLER(get_message)
/* then check for any raw hardware message */ /* then check for any raw hardware message */
if ((filter & QS_INPUT) && if ((filter & QS_INPUT) &&
filter_contains_hw_range( req->get_first, req->get_last ) && filter_contains_hw_range( req->get_first, req->get_last ) &&
get_hardware_message( current, req->hw_id, get_win, req->get_first, req->get_last, reply )) get_hardware_message( current, req->hw_id, get_win, req->get_first, req->get_last, req->flags, reply ))
return; return;
/* now check for WM_PAINT */ /* now check for WM_PAINT */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment