diff --git a/dlls/d3d9/tests/device.c b/dlls/d3d9/tests/device.c index eb424e213484254db88a3ad720556a3db4e6cd8c..0004715455dc855640c2a21e190d62c8950ca5e5 100644 --- a/dlls/d3d9/tests/device.c +++ b/dlls/d3d9/tests/device.c @@ -2370,8 +2370,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); @@ -2389,6 +2400,7 @@ static void test_wndproc(void) LONG_PTR proc; ULONG ref; DWORD res, tid; + MSG msg; if (!(d3d9 = pDirect3DCreate9(D3D_SDK_VERSION))) { @@ -2434,6 +2446,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(d3d9, device_window, focus_window, FALSE); if (!device) { @@ -2443,10 +2457,13 @@ 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); - tmp = GetForegroundWindow(); - todo_wine ok(tmp == focus_window, "Expected foreground window %p, got %p.\n", focus_window, tmp); + if (0) /* Disabled until we can make this work in a reliable way on Wine. */ + { + tmp = GetFocus(); + ok(tmp == focus_window, "Expected focus %p, got %p.\n", focus_window, tmp); + tmp = GetForegroundWindow(); + ok(tmp == focus_window, "Expected foreground window %p, got %p.\n", focus_window, tmp); + } SetForegroundWindow(focus_window); filter_messages = focus_window;