Alexandre Julliard : server: Set the idle event when PeekMessage is called with -1 as window filter.

Alexandre Julliard julliard at winehq.org
Wed Mar 3 11:15:46 CST 2010


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Mar  3 13:19:13 2010 +0100

server: Set the idle event when PeekMessage is called with -1 as window filter.

---

 dlls/user32/tests/msg.c |   42 ++++++++++++++++++++++++++++++++++++++++++
 server/queue.c          |    1 +
 2 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index 492de62..714e57f 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -12080,6 +12080,13 @@ static const struct
          { 0,            0,            FALSE },
          { 0,            WAIT_TIMEOUT, FALSE },
          { 0,            0,            FALSE },
+         { 0,            0,            FALSE },
+/* 15 */ { 0,            0,            FALSE },
+         { WAIT_TIMEOUT, 0,            FALSE },
+         { WAIT_TIMEOUT, 0,            FALSE },
+         { WAIT_TIMEOUT, 0,            FALSE },
+         { WAIT_TIMEOUT, 0,            FALSE },
+/* 20 */ { WAIT_TIMEOUT, 0,            FALSE },
 };
 
 static DWORD CALLBACK do_wait_idle_child_thread( void *arg )
@@ -12205,6 +12212,41 @@ static void do_wait_idle_child( int arg )
         WaitForSingleObject( thread, 10000 );
         CloseHandle( thread );
         break;
+    case 14:
+        SetEvent( start_event );
+        Sleep( 200 );
+        PeekMessage( &msg, HWND_TOPMOST, 0, 0, PM_NOREMOVE );
+        break;
+    case 15:
+        SetEvent( start_event );
+        Sleep( 200 );
+        PeekMessage( &msg, HWND_BROADCAST, 0, 0, PM_NOREMOVE );
+        break;
+    case 16:
+        SetEvent( start_event );
+        Sleep( 200 );
+        PeekMessage( &msg, HWND_BOTTOM, 0, 0, PM_NOREMOVE );
+        break;
+    case 17:
+        SetEvent( start_event );
+        Sleep( 200 );
+        PeekMessage( &msg, (HWND)0xdeadbeef, 0, 0, PM_NOREMOVE );
+        break;
+    case 18:
+        SetEvent( start_event );
+        Sleep( 200 );
+        PeekMessage( &msg, HWND_NOTOPMOST, 0, 0, PM_NOREMOVE );
+        break;
+    case 19:
+        SetEvent( start_event );
+        Sleep( 200 );
+        PeekMessage( &msg, HWND_MESSAGE, 0, 0, PM_NOREMOVE );
+        break;
+    case 20:
+        SetEvent( start_event );
+        Sleep( 200 );
+        PeekMessage( &msg, GetDesktopWindow(), 0, 0, PM_NOREMOVE );
+        break;
     }
     WaitForSingleObject( end_event, 2000 );
     CloseHandle( start_event );
diff --git a/server/queue.c b/server/queue.c
index 938d7cf..b2bc603 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -1819,6 +1819,7 @@ DECL_HANDLER(get_message)
         return;
     }
 
+    if (get_win == -1 && current->process->idle_event) set_event( current->process->idle_event );
     queue->wake_mask = req->wake_mask;
     queue->changed_mask = req->changed_mask;
     set_error( STATUS_PENDING );  /* FIXME */




More information about the wine-cvs mailing list