From: Paul Gofman pgofman@codeweavers.com
--- dlls/user32/tests/input.c | 1 + server/queue.c | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c index 9196e67c15b..eb548ea0924 100644 --- a/dlls/user32/tests/input.c +++ b/dlls/user32/tests/input.c @@ -4131,6 +4131,7 @@ static void test_SendInput_mouse_messages(void)
mouse_event( MOUSEEVENTF_MOVE, 0, 0, 0, 0 ); /* recent Windows versions don't call the hooks with no movement */ + ok(!current_sequence_len || broken(current_sequence_len) /* before Win10 1709 */, "got %ld.\n", current_sequence_len); if (current_sequence_len) { ok_seq( mouse_move ); diff --git a/server/queue.c b/server/queue.c index 76a82dcf712..8e639fa4bc9 100644 --- a/server/queue.c +++ b/server/queue.c @@ -2250,15 +2250,14 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons { x = input->mouse.x; y = input->mouse.y; - if (flags & ~(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE) && - x == desktop_shm->cursor.x && y == desktop_shm->cursor.y) - flags &= ~MOUSEEVENTF_MOVE; } else { x = desktop_shm->cursor.x + input->mouse.x; y = desktop_shm->cursor.y + input->mouse.y; } + if (x == desktop_shm->cursor.x && y == desktop_shm->cursor.y) + flags &= ~MOUSEEVENTF_MOVE; } else {
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=150918
Your paranoid android.
=== w11pro64 (32 bit report) ===
user32: input.c:4242: Test failed: button_up_hwnd_todo 0: got MSG_TEST_WIN hwnd 00050040, msg WM_LBUTTONUP, wparam 0, lparam 0x320032 input.c:4242: Test failed: button_up_hwnd_todo 1 (missing): MSG_TEST_WIN hwnd 00050040, WM_LBUTTONUP, wparam 0, lparam 0x320032 input.c:4438: Test failed: layered 0: button_up_hwnd_todo 0: got MSG_TEST_WIN hwnd 00050040, msg WM_LBUTTONUP, wparam 0, lparam 0x320032 input.c:4438: Test failed: layered 0: button_up_hwnd_todo 1 (missing): MSG_TEST_WIN hwnd 00050040, WM_LBUTTONUP, wparam 0, lparam 0x320032
=== debian11 (32 bit zh:CN report) ===
user32: input.c:4306: Test succeeded inside todo block: button_down_hwnd_todo 1: got MSG_TEST_WIN hwnd 000400A0, msg WM_LBUTTONDOWN, wparam 0x1, lparam 0x320032
=== debian11b (64 bit WoW report) ===
kernel32: comm.c:1574: Test failed: AbortWaitCts hComPortEvent failed comm.c:1586: Test failed: Unexpected time 1001, expected around 500
mfmediaengine: mfmediaengine.c:2640: Test failed: Got unexpected refcount 1.
user32: win.c:13339: Test failed: Got no WM_MOUSEMOVE.
This fixes Dirt Rally 2 not being able to hide the mouse or having it flickering and triggering stutter.
The game hides mouse with SetCursor(NULL) when appropriate, but also always shows it with SetCursor(cursor) upon receiving WM_MOUSEMOVE. Also, the game is constantly sending mouse events with SendInput() with zero relative movement. On an older Wine (before 9) and also on modern Windows that doesn't result in mouse move sequence (WM_NCHITTEST, WM_SETCURSORPOS, WM_MOUSEMOVE), as well as sending mouse input with absolute coordinates which match current. While still results in WM_INPUT messages if rawinput is configured for window.
There is a test failure worth attention, I am going to take a look at that.