Module: wine Branch: master Commit: 54efd8a430e52d6fd8977d169bfc01df0385f845 URL: http://source.winehq.org/git/wine.git/?a=commit;h=54efd8a430e52d6fd8977d169b...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Thu Sep 13 09:18:17 2012 +0200
server: Only remove WM_INPUT messages from the queue if PM_REMOVE is set.
---
server/queue.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/server/queue.c b/server/queue.c index f290c0b..7aa9b14 100644 --- a/server/queue.c +++ b/server/queue.c @@ -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 */ 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 *win_thread; @@ -1968,7 +1969,8 @@ static int get_hardware_message( struct thread *thread, unsigned int hw_id, user
data->hw_id = msg->unique_id; 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; } /* nothing found, clear the hardware queue bits */ @@ -2405,7 +2407,7 @@ DECL_HANDLER(get_message) /* then check for any raw hardware message */ if ((filter & QS_INPUT) && 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;
/* now check for WM_PAINT */