From 15beabe071002954ad38ca1891616efa245dbc4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Bernon?= Date: Tue, 25 May 2021 18:48:52 +0200 Subject: [PATCH] dinput8/tests: Flush events after creating window. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To make it more likely it gets focused on X11 and fix spurious failures. Signed-off-by: RĂ©mi Bernon Signed-off-by: Alexandre Julliard --- dlls/dinput/tests/mouse.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/dlls/dinput/tests/mouse.c b/dlls/dinput/tests/mouse.c index 2e0b8cdf2e9..69051bb2a34 100644 --- a/dlls/dinput/tests/mouse.c +++ b/dlls/dinput/tests/mouse.c @@ -48,6 +48,21 @@ static const HRESULT SetCoop_child_window[16] = { E_INVALIDARG, E_HANDLE, E_HANDLE, E_INVALIDARG, E_INVALIDARG, E_INVALIDARG, E_INVALIDARG, E_INVALIDARG}; +static void flush_events(void) +{ + MSG msg; + int diff = 200; + int min_timeout = 100; + DWORD time = GetTickCount() + diff; + + while (diff > 0) + { + if (MsgWaitForMultipleObjects( 0, NULL, FALSE, min_timeout, QS_ALLINPUT ) == WAIT_TIMEOUT) break; + while (PeekMessageA( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessageA( &msg ); + diff = time - GetTickCount(); + } +} + static void test_set_coop(IDirectInputA *pDI, HWND hwnd) { HRESULT hr; @@ -131,6 +146,7 @@ static void test_acquire(IDirectInputA *pDI, HWND hwnd) hwnd2 = CreateWindowA("static", "Temporary", WS_VISIBLE, 10, 210, 200, 200, NULL, NULL, NULL, NULL); ok(hwnd2 != NULL, "CreateWindowA failed with %u\n", GetLastError()); + flush_events(); hr = IDirectInputDevice_GetDeviceState(pMouse, sizeof(m_state), &m_state); ok(hr == DIERR_NOTACQUIRED, "GetDeviceState() should have failed: %08x\n", hr);