Alexandre Julliard : user/tests: Try harder to flush X events before running tests.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Mar 15 05:12:24 CST 2006


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Mar 15 12:11:02 2006 +0100

user/tests: Try harder to flush X events before running tests.

---

 dlls/user/tests/msg.c |   29 ++++++++++++++++++++---------
 dlls/user/tests/win.c |   16 ++++++++++++++++
 2 files changed, 36 insertions(+), 9 deletions(-)

diff --git a/dlls/user/tests/msg.c b/dlls/user/tests/msg.c
index 5b3cac5..b11ed2f 100644
--- a/dlls/user/tests/msg.c
+++ b/dlls/user/tests/msg.c
@@ -1282,6 +1282,21 @@ static void add_message(const struct mes
     sequence_cnt++;
 }
 
+/* try to make sure pending X events have been processed before continuing */
+static void flush_events(void)
+{
+    MSG msg;
+    int diff = 100;
+    DWORD time = GetTickCount() + diff;
+
+    while (diff > 0)
+    {
+        MsgWaitForMultipleObjects( 0, NULL, FALSE, diff, QS_ALLINPUT );
+        while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
+        diff = time - GetTickCount();
+    }
+}
+
 static void flush_sequence(void)
 {
     HeapFree(GetProcessHeap(), 0, sequence);
@@ -3938,10 +3953,7 @@ static void test_paint_messages(void)
 
     ShowWindow( hwnd, SW_SHOW );
     UpdateWindow( hwnd );
-
-    /* try to flush pending X expose events */
-    MsgWaitForMultipleObjects( 0, NULL, FALSE, 100, QS_ALLINPUT );
-    while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
+    flush_events();
 
     check_update_rgn( hwnd, 0 );
     SetRectRgn( hrgn, 10, 10, 20, 20 );
@@ -4142,10 +4154,7 @@ static void test_paint_messages(void)
     ShowWindow( hparent, SW_SHOW );
     UpdateWindow( hparent );
     UpdateWindow( hchild );
-    /* try to flush pending X expose events */
-    MsgWaitForMultipleObjects( 0, NULL, FALSE, 100, QS_ALLINPUT );
-    while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
-
+    flush_events();
     flush_sequence();
     log_all_parent_messages++;
 
@@ -4702,6 +4711,7 @@ static void test_accelerators(void)
 
     assert(hwnd != 0);
     UpdateWindow(hwnd);
+    flush_events();
     SetFocus(hwnd);
     ok(GetFocus() == hwnd, "wrong focus window %p\n", GetFocus());
 
@@ -6171,7 +6181,7 @@ static void test_scrollwindowex(void)
             10, 10, 150, 150, hwnd, 0, 0, NULL);
     ok (hchild != 0, "Failed to create child\n");
     UpdateWindow(hwnd);
-    while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
+    flush_events();
     flush_sequence();
 
     /* scroll without the child window */
@@ -6424,6 +6434,7 @@ static void test_DispatchMessage(void)
             if (++count > 10) break;
         }
     }
+    DestroyWindow(hwnd);
 }
 
 
diff --git a/dlls/user/tests/win.c b/dlls/user/tests/win.c
index d4045b1..326a279 100644
--- a/dlls/user/tests/win.c
+++ b/dlls/user/tests/win.c
@@ -60,6 +60,21 @@ static HMENU hmenu;
 
 #define COUNTOF(arr) (sizeof(arr)/sizeof(arr[0]))
 
+/* try to make sure pending X events have been processed before continuing */
+static void flush_events(void)
+{
+    MSG msg;
+    int diff = 100;
+    DWORD time = GetTickCount() + diff;
+
+    while (diff > 0)
+    {
+        MsgWaitForMultipleObjects( 0, NULL, FALSE, diff, QS_ALLINPUT );
+        while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
+        diff = time - GetTickCount();
+    }
+}
+
 /* check the values returned by the various parent/owner functions on a given window */
 static void check_parents( HWND hwnd, HWND ga_parent, HWND gwl_parent, HWND get_parent,
                            HWND gw_owner, HWND ga_root, HWND ga_root_owner )
@@ -3423,6 +3438,7 @@ static void test_csparentdc(void)
    ShowWindow(hwndMain, SW_SHOW);
    ShowWindow(hwnd1, SW_SHOW);
    ShowWindow(hwnd2, SW_SHOW);
+   flush_events();
 
    zero_parentdc_test(&test_answer);
    InvalidateRect(hwndMain, NULL, TRUE);




More information about the wine-cvs mailing list