Module: wine Branch: master Commit: 82bee5ceda12ec30603d7f87034abd0454580bdd URL: http://source.winehq.org/git/wine.git/?a=commit;h=82bee5ceda12ec30603d7f8703...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Jun 17 15:14:47 2014 +0200
user32: Properly block sent messages while waiting for a reply with SMTO_BLOCK.
---
dlls/user32/message.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/dlls/user32/message.c b/dlls/user32/message.c index 3167a2f..fd82498 100644 --- a/dlls/user32/message.c +++ b/dlls/user32/message.c @@ -3011,6 +3011,7 @@ static void wait_message_reply( UINT flags ) { struct user_thread_info *thread_info = get_user_thread_info(); HANDLE server_queue = get_server_queue_handle(); + unsigned int wake_mask = QS_SMRESULT | ((flags & SMTO_BLOCK) ? 0 : QS_SENDMESSAGE);
for (;;) { @@ -3018,11 +3019,10 @@ static void wait_message_reply( UINT flags )
SERVER_START_REQ( set_queue_mask ) { - req->wake_mask = QS_SMRESULT | ((flags & SMTO_BLOCK) ? 0 : QS_SENDMESSAGE); - req->changed_mask = req->wake_mask; + req->wake_mask = wake_mask; + req->changed_mask = wake_mask; req->skip_wait = 1; - if (!wine_server_call( req )) - wake_bits = reply->wake_bits; + if (!wine_server_call( req )) wake_bits = reply->wake_bits & wake_mask; } SERVER_END_REQ;
@@ -3036,7 +3036,7 @@ static void wait_message_reply( UINT flags ) continue; }
- wow_handlers.wait_message( 1, &server_queue, INFINITE, QS_SENDMESSAGE, 0 ); + wow_handlers.wait_message( 1, &server_queue, INFINITE, wake_mask, 0 ); } }