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