From: Rémi Bernon rbernon@codeweavers.com
Resetting the queue sync doesn't look right or necessary anymore. The sync state should reflect the bits vs mask status at all time and the sync will be reset whenever masks are updated, for instance before any wait on the queue. --- dlls/win32u/message.c | 2 -- server/protocol.def | 1 - server/queue.c | 3 +-- 3 files changed, 1 insertion(+), 5 deletions(-)
diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c index 035ab6574e4..3a3f79a2ee8 100644 --- a/dlls/win32u/message.c +++ b/dlls/win32u/message.c @@ -3219,7 +3219,6 @@ static DWORD wait_objects( DWORD count, const HANDLE *handles, DWORD timeout, { req->wake_mask = wake_mask; req->changed_mask = changed_mask; - req->skip_wait = 0; wine_server_call( req ); } SERVER_END_REQ; @@ -3540,7 +3539,6 @@ static void wait_message_reply( UINT flags ) { req->wake_mask = wake_mask; req->changed_mask = wake_mask; - req->skip_wait = 1; wine_server_call( req ); wake_bits = reply->wake_bits & wake_mask; } diff --git a/server/protocol.def b/server/protocol.def index 6bb7ae155c6..4237cb53307 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -2286,7 +2286,6 @@ struct process_info @REQ(set_queue_mask) unsigned int wake_mask; /* wakeup bits mask */ unsigned int changed_mask; /* changed bits mask */ - int skip_wait; /* will we skip waiting if signaled? */ @REPLY unsigned int wake_bits; /* current wake bits */ unsigned int changed_bits; /* current changed bits */ diff --git a/server/queue.c b/server/queue.c index 9994e0fbe6c..40f534f7bb2 100644 --- a/server/queue.c +++ b/server/queue.c @@ -3171,8 +3171,7 @@ DECL_HANDLER(set_queue_mask) reply->changed_bits = queue_shm->changed_bits;
if (!get_queue_status( queue )) reset_queue_sync( queue ); - else if (!req->skip_wait) signal_queue_sync( queue ); - else reset_queue_sync( queue ); + else signal_queue_sync( queue ); } }