[PATCH 1/2] d3d8/tests: Add some message processing to test_wndproc().

Henri Verbeet hverbeet at codeweavers.com
Fri Mar 19 08:33:18 CDT 2010


---
 dlls/d3d8/tests/device.c |   22 ++++++++++++++++++----
 1 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/dlls/d3d8/tests/device.c b/dlls/d3d8/tests/device.c
index c6613ca..5633f99 100644
--- a/dlls/d3d8/tests/device.c
+++ b/dlls/d3d8/tests/device.c
@@ -1525,8 +1525,19 @@ static DWORD WINAPI wndproc_thread(void *param)
     ret = SetEvent(p->window_created);
     ok(ret, "SetEvent failed, last error %#x.\n", GetLastError());
 
-    res = WaitForSingleObject(p->test_finished, INFINITE);
-    ok(res == WAIT_OBJECT_0, "Wait failed (%#x), last error %#x.\n", res, GetLastError());
+    for (;;)
+    {
+        MSG msg;
+
+        while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessage(&msg);
+        res = WaitForSingleObject(p->test_finished, 100);
+        if (res == WAIT_OBJECT_0) break;
+        if (res != WAIT_TIMEOUT)
+        {
+            ok(0, "Wait failed (%#x), last error %#x.\n", res, GetLastError());
+            break;
+        }
+    }
 
     DestroyWindow(p->dummy_window);
 
@@ -1544,6 +1555,7 @@ static void test_wndproc(void)
     LONG_PTR proc;
     ULONG ref;
     DWORD res;
+    MSG msg;
 
     if (!(d3d8 = pDirect3DCreate8(D3D_SDK_VERSION)))
     {
@@ -1589,6 +1601,8 @@ static void test_wndproc(void)
     expect_message.window = focus_window;
     expect_message.message = WM_SETFOCUS;
 
+    while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) DispatchMessage(&msg);
+
     device = create_device(d3d8, device_window, focus_window, FALSE);
     if (!device)
     {
@@ -1599,9 +1613,9 @@ static void test_wndproc(void)
     ok(!expect_message.message, "Expected message %#x for window %p, but didn't receive it.\n",
             expect_message.message, expect_message.window);
     tmp = GetFocus();
-    todo_wine ok(tmp == focus_window, "Expected focus %p, got %p.\n", focus_window, tmp);
+    ok(tmp == focus_window, "Expected focus %p, got %p.\n", focus_window, tmp);
     tmp = GetForegroundWindow();
-    todo_wine ok(tmp == focus_window, "Expected foreground window %p, got %p.\n", focus_window, tmp);
+    ok(tmp == focus_window, "Expected foreground window %p, got %p.\n", focus_window, tmp);
     SetForegroundWindow(focus_window);
 
     filter_messages = focus_window;
-- 
1.6.4.4




More information about the wine-patches mailing list