Alexandre Julliard : user32: Properly block sent messages while waiting for a reply with SMTO_BLOCK.

Alexandre Julliard julliard at winehq.org
Tue Jun 17 14:40:51 CDT 2014


Module: wine
Branch: master
Commit: 82bee5ceda12ec30603d7f87034abd0454580bdd
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=82bee5ceda12ec30603d7f87034abd0454580bdd

Author: Alexandre Julliard <julliard at 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 );
     }
 }
 




More information about the wine-cvs mailing list