From: Rémi Bernon rbernon@codeweavers.com
--- dlls/win32u/message.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dlls/win32u/message.c b/dlls/win32u/message.c index d3ef83785bb..df64e059177 100644 --- a/dlls/win32u/message.c +++ b/dlls/win32u/message.c @@ -3229,7 +3229,10 @@ static BOOL check_queue_masks( UINT wake_mask, UINT changed_mask ) UINT status;
while ((status = get_shared_queue( &lock, &queue_shm )) == STATUS_PENDING) - skip = queue_shm->wake_mask == wake_mask && queue_shm->changed_mask == changed_mask; + { + if (queue_shm->wake_mask != wake_mask || queue_shm->changed_mask != changed_mask) skip = FALSE; + else skip = get_tick_count() - (UINT64)queue_shm->access_time / 10000 < 3000; /* avoid hung queue */ + }
if (status) return FALSE; return skip;