[PATCH 1/4] user32/tests: Recreate the window to make it more likely to have focus.

Rémi Bernon rbernon at codeweavers.com
Fri May 14 04:46:47 CDT 2021


Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---

* PATCH 1/4 should help with these spurious failures:

  input.c:2789: Test failed: 15: expected WM_INPUT message
  input.c:2792: Test failed: 15: expected RIM_INPUT message

The root cause is the desktop window getting foreground when we
try to change focus from the thread window back to the main window that
is created topmost. X11 focus out / focus in events receiving order
sometimes make winex11.drv decide to give the desktop window focus and
this ends up with the WM_INPUT messages not being delivered.

* PATCH 2/4 just skips the recurrent failure on Chinese:China locale.

* PATCH 3/4 and PATCH 4/4 which also (Superseding 205693) are trying to
  fix the following spurious failures:

  input.c:2162: Test failed: GetRawInputBuffer returned 4
  input.c:2157: Test failed: GetRawInputBuffer returned unexpected size: 0
  input.c:2162: Test failed: GetRawInputBuffer returned 0
  input.c:2163: Test failed: GetRawInputBuffer returned unexpected size: 0
  input.c:2164: Test failed: Unexpected rawinput data: 0
  input.c:2165: Test failed: Unexpected rawinput data: 0
  input.c:2166: Test failed: Unexpected rawinput data: 0
  input.c:2224: Test failed: GetRawInputData succeeded
  input.c:2225: Test failed: GetRawInputData returned deadbeef
  input.c:2338: Test failed: Spurious WM_INPUT messages

  I've got no idea if they really do, as I'm not yet able to reproduce
  them consistently when submitting the patches manually. Submitting
  patches from the M-L seem to trigger the failures more reliably. So
  if they don't I guess they could just be ignored.


 dlls/user32/tests/input.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
index 3d4f0d03d0d..8c67fc67cb3 100644
--- a/dlls/user32/tests/input.c
+++ b/dlls/user32/tests/input.c
@@ -2758,6 +2758,10 @@ static void test_rawinput(const char* argv0)
         {
         case 14:
         case 15:
+            DestroyWindow(hwnd);
+            hwnd = CreateWindowA("static", "static", WS_VISIBLE | WS_POPUP,
+                                 pt.x - 50, pt.y - 50, 100, 100, 0, NULL, NULL, NULL);
+            ok(hwnd != 0, "CreateWindow failed\n");
             SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);
             SetForegroundWindow(hwnd);
             empty_message_queue();
-- 
2.31.0




More information about the wine-devel mailing list