Module: wine Branch: master Commit: 03f645a76bf697ead28df5de665cb351b2d996f9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=03f645a76bf697ead28df5de66...
Author: Piotr Caban piotr@codeweavers.com Date: Fri Feb 6 16:44:25 2015 +0100
server: Filter WM_QUIT message in PeekMessage call if PM_QS_POSTMESSAGE was not specified.
---
dlls/user32/tests/msg.c | 4 ++++ server/queue.c | 5 ++--- 2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c index 66f054a..f1236cf 100644 --- a/dlls/user32/tests/msg.c +++ b/dlls/user32/tests/msg.c @@ -10500,6 +10500,10 @@ static void test_quit_message(void) flush_events(); PostQuitMessage(0xbeef);
+ msg.message = 0; + ret = PeekMessageA(&msg, 0, 0, 0, PM_QS_SENDMESSAGE); + ok(!ret, "got %x message\n", msg.message); + ret = PeekMessageA(&msg, NULL, 0, 0, PM_NOREMOVE); ok(ret, "PeekMessage failed with error %d\n", GetLastError()); ok(msg.message == WM_QUIT, "Received message 0x%04x instead of WM_QUIT\n", msg.message); diff --git a/server/queue.c b/server/queue.c index 5f87203..3a321cd 100644 --- a/server/queue.c +++ b/server/queue.c @@ -2384,9 +2384,8 @@ DECL_HANDLER(get_message) get_posted_message( queue, get_win, WM_HOTKEY, WM_HOTKEY, req->flags, reply )) return;
- /* only check for quit messages if not posted messages pending. - * note: the quit message isn't filtered */ - if (get_quit_message( queue, req->flags, reply )) + /* only check for quit messages if not posted messages pending */ + if ((filter & QS_POSTMESSAGE) && get_quit_message( queue, req->flags, reply )) return;
/* then check for any raw hardware message */