Signed-off-by: Rémi Bernon rbernon@codeweavers.com ---
The first two patches are just about testing and fixing the standard SendInput behavior regarding its parameters.
Then, the idea introduced here is to use a custom struct for hardware input, so we can then add more data for the HID reports, and send WM_INPUT messages using SendInput.
It looks like that INPUT struct already has a INPUT_HARDWARE type, which we could also re-use for such non-mouse and non-keyboard input, but it doesn't seem to do anything on Windows. It always returns 0 and sets last error to ERROR_CALL_NOT_IMPLEMENTED.
Alternatively, this could be implemented by changing __wine_send_input to accept the extended structure, but this way will make it possible to drop this custom entry point completely, which may be interesting.
dlls/user32/input.c | 18 +++++++++++ dlls/user32/tests/input.c | 63 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c index e06f8b4413e..e9a74f177b9 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -182,6 +182,24 @@ UINT WINAPI SendInput( UINT count, LPINPUT inputs, int size ) UINT i; NTSTATUS status;
+ if (size != sizeof(INPUT)) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return 0; + } + + if (!count) + { + SetLastError( ERROR_INVALID_PARAMETER ); + return 0; + } + + if (!inputs) + { + SetLastError( ERROR_NOACCESS ); + return 0; + } + for (i = 0; i < count; i++) { if (inputs[i].type == INPUT_MOUSE) diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c index 9d75daa0bd5..57bae6cdcad 100644 --- a/dlls/user32/tests/input.c +++ b/dlls/user32/tests/input.c @@ -4118,6 +4118,68 @@ static void test_UnregisterDeviceNotification(void) ok(ret == FALSE, "Unregistering NULL Device Notification returned: %d\n", ret); }
+static void test_SendInput(void) +{ + INPUT input[16]; + UINT res, i; + HWND hwnd; + + hwnd = CreateWindowW( L"static", L"test", WS_OVERLAPPED, 0, 0, 100, 100, 0, 0, 0, 0 ); + ok(hwnd != 0, "CreateWindowW failed\n"); + + ShowWindow( hwnd, SW_SHOWNORMAL ); + UpdateWindow( hwnd ); + SetForegroundWindow( hwnd ); + SetFocus( hwnd ); + empty_message_queue(); + + SetLastError(0xdeadbeef); + res = SendInput(0, NULL, 0); + ok(res == 0 && GetLastError() == ERROR_INVALID_PARAMETER, "SendInput returned %u, error %#x\n", res, GetLastError()); + SetLastError(0xdeadbeef); + res = SendInput(1, NULL, 0); + ok(res == 0 && GetLastError() == ERROR_INVALID_PARAMETER, "SendInput returned %u, error %#x\n", res, GetLastError()); + SetLastError(0xdeadbeef); + res = SendInput(1, NULL, sizeof(*input)); + ok(res == 0 && GetLastError() == ERROR_NOACCESS, "SendInput returned %u, error %#x\n", res, GetLastError()); + SetLastError(0xdeadbeef); + res = SendInput(0, input, sizeof(*input)); + ok(res == 0 && GetLastError() == ERROR_INVALID_PARAMETER, "SendInput returned %u, error %#x\n", res, GetLastError()); + SetLastError(0xdeadbeef); + res = SendInput(0, NULL, sizeof(*input)); + ok(res == 0 && GetLastError() == ERROR_INVALID_PARAMETER, "SendInput returned %u, error %#x\n", res, GetLastError()); + + memset(input, 0, sizeof(input)); + SetLastError(0xdeadbeef); + res = SendInput(1, input, sizeof(*input)); + ok(res == 1 && GetLastError() == 0xdeadbeef, "SendInput returned %u, error %#x\n", res, GetLastError()); + SetLastError(0xdeadbeef); + res = SendInput(16, input, sizeof(*input)); + ok(res == 16 && GetLastError() == 0xdeadbeef, "SendInput returned %u, error %#x\n", res, GetLastError()); + + SetLastError(0xdeadbeef); + res = SendInput(1, input, 0); + ok(res == 0 && GetLastError() == ERROR_INVALID_PARAMETER, "SendInput returned %u, error %#x\n", res, GetLastError()); + SetLastError(0xdeadbeef); + res = SendInput(1, input, sizeof(*input) + 1); + ok(res == 0 && GetLastError() == ERROR_INVALID_PARAMETER, "SendInput returned %u, error %#x\n", res, GetLastError()); + SetLastError(0xdeadbeef); + res = SendInput(1, input, sizeof(*input) - 1); + ok(res == 0 && GetLastError() == ERROR_INVALID_PARAMETER, "SendInput returned %u, error %#x\n", res, GetLastError()); + + for (i = 0; i < ARRAY_SIZE(input); ++i) input[i].type = INPUT_KEYBOARD; + SetLastError(0xdeadbeef); + res = SendInput(16, input, offsetof(INPUT, ki) + sizeof(KEYBDINPUT)); + ok(res == 0 && GetLastError() == ERROR_INVALID_PARAMETER, "SendInput returned %u, error %#x\n", res, GetLastError()); + SetLastError(0xdeadbeef); + res = SendInput(16, input, sizeof(*input)); + ok(res == 16 && GetLastError() == 0xdeadbeef, "SendInput returned %u, error %#x\n", res, GetLastError()); + empty_message_queue(); + + trace("done\n"); + DestroyWindow(hwnd); +} + START_TEST(input) { char **argv; @@ -4140,6 +4202,7 @@ START_TEST(input) return; }
+ test_SendInput(); test_Input_blackbox(); test_Input_whitebox(); test_Input_unicode();
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/user32/input.c | 20 ++++++++++++++------ dlls/user32/tests/input.c | 22 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 6 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c index e9a74f177b9..dfb6bf7f646 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -179,8 +179,9 @@ static void update_mouse_coords( INPUT *input ) */ UINT WINAPI SendInput( UINT count, LPINPUT inputs, int size ) { + NTSTATUS status = STATUS_SUCCESS; + INPUT tmp; UINT i; - NTSTATUS status;
if (size != sizeof(INPUT)) { @@ -202,14 +203,21 @@ UINT WINAPI SendInput( UINT count, LPINPUT inputs, int size )
for (i = 0; i < count; i++) { - if (inputs[i].type == INPUT_MOUSE) + tmp = inputs[i]; + + switch (tmp.type) { + case INPUT_MOUSE: /* we need to update the coordinates to what the server expects */ - INPUT input = inputs[i]; - update_mouse_coords( &input ); - status = send_hardware_message( 0, &input, SEND_HWMSG_INJECTED ); + update_mouse_coords( &tmp ); + /* fallthrough */ + case INPUT_KEYBOARD: + status = send_hardware_message( 0, &tmp, SEND_HWMSG_INJECTED ); + break; + case INPUT_HARDWARE: + SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); + return 0; } - else status = send_hardware_message( 0, &inputs[i], SEND_HWMSG_INJECTED );
if (status) { diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c index 57bae6cdcad..514bf2765c6 100644 --- a/dlls/user32/tests/input.c +++ b/dlls/user32/tests/input.c @@ -4123,6 +4123,7 @@ static void test_SendInput(void) INPUT input[16]; UINT res, i; HWND hwnd; + MSG msg;
hwnd = CreateWindowW( L"static", L"test", WS_OVERLAPPED, 0, 0, 100, 100, 0, 0, 0, 0 ); ok(hwnd != 0, "CreateWindowW failed\n"); @@ -4176,6 +4177,27 @@ static void test_SendInput(void) ok(res == 16 && GetLastError() == 0xdeadbeef, "SendInput returned %u, error %#x\n", res, GetLastError()); empty_message_queue();
+ for (i = 0; i < ARRAY_SIZE(input); ++i) input[i].type = INPUT_HARDWARE; + SetLastError(0xdeadbeef); + res = SendInput(16, input, offsetof(INPUT, hi) + sizeof(HARDWAREINPUT)); + ok(res == 0 && GetLastError() == ERROR_INVALID_PARAMETER, "SendInput returned %u, error %#x\n", res, GetLastError()); + SetLastError(0xdeadbeef); + res = SendInput(16, input, sizeof(*input)); + ok(res == 0 && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED, "SendInput returned %u, error %#x\n", res, GetLastError()); + while (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE)) ok(0, "SendInput triggered unexpected message %#x\n", msg.message); + + memset(input, 0, sizeof(input)); + input[0].type = INPUT_HARDWARE; + SetLastError(0xdeadbeef); + res = SendInput(16, input, sizeof(*input)); + ok(res == 0 && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED, "SendInput returned %u, error %#x\n", res, GetLastError()); + + for (i = 0; i < ARRAY_SIZE(input); ++i) input[i].type = INPUT_HARDWARE + 1; + SetLastError(0xdeadbeef); + res = SendInput(16, input, sizeof(*input)); + ok(res == 16 && GetLastError() == 0xdeadbeef, "SendInput returned %u, error %#x\n", res, GetLastError()); + while (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE)) ok(0, "SendInput triggered unexpected message %#x\n", msg.message); + trace("done\n"); DestroyWindow(hwnd); }
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=86706
Your paranoid android.
=== w2008s64 (32 bit report) ===
user32: input.c:4145: Test failed: SendInput returned 0, error 0x57 input.c:4186: Test failed: SendInput returned 16, error 0xdeadbeef input.c:4193: Test failed: SendInput returned 16, error 0xdeadbeef
=== w7u_2qxl (32 bit report) ===
user32: input.c:4186: Test failed: SendInput returned 16, error 0xdeadbeef input.c:4193: Test failed: SendInput returned 16, error 0xdeadbeef input.c:756: Test failed: 0 (a4/0): 00 from 00 -> 80 unexpected
=== w7u_adm (32 bit report) ===
user32: input.c:4186: Test failed: SendInput returned 16, error 0xdeadbeef input.c:4193: Test failed: SendInput returned 16, error 0xdeadbeef
=== w7u_el (32 bit report) ===
user32: input.c:4186: Test failed: SendInput returned 16, error 0xdeadbeef input.c:4193: Test failed: SendInput returned 16, error 0xdeadbeef
=== w8 (32 bit report) ===
user32: input.c:4186: Test failed: SendInput returned 16, error 0xdeadbeef input.c:4193: Test failed: SendInput returned 16, error 0xdeadbeef
=== w8adm (32 bit report) ===
user32: input.c:4186: Test failed: SendInput returned 16, error 0xdeadbeef input.c:4193: Test failed: SendInput returned 16, error 0xdeadbeef
=== w864 (32 bit report) ===
user32: input.c:4145: Test failed: SendInput returned 0, error 0x57 input.c:4186: Test failed: SendInput returned 16, error 0xdeadbeef input.c:4193: Test failed: SendInput returned 16, error 0xdeadbeef
=== w1064v1507 (32 bit report) ===
user32: input.c:4145: Test failed: SendInput returned 0, error 0x57 input.c:4186: Test failed: SendInput returned 16, error 0xdeadbeef input.c:4193: Test failed: SendInput returned 16, error 0xdeadbeef input.c:1428: Test failed: Wrong new pos: (149,149)
=== w1064v1809 (32 bit report) ===
user32: input.c:4145: Test failed: SendInput returned 0, error 0x57 input.c:4186: Test failed: SendInput returned 16, error 0xdeadbeef input.c:4193: Test failed: SendInput returned 16, error 0xdeadbeef
=== w1064 (32 bit report) ===
user32: input.c:4145: Test failed: SendInput returned 0, error 0x57 input.c:4186: Test failed: SendInput returned 16, error 0xdeadbeef input.c:4193: Test failed: SendInput returned 16, error 0xdeadbeef
=== w10pro64 (32 bit report) ===
user32: input.c:4145: Test failed: SendInput returned 0, error 0x57 input.c:4186: Test failed: SendInput returned 16, error 0xdeadbeef input.c:4193: Test failed: SendInput returned 16, error 0xdeadbeef
=== wvistau64 (64 bit report) ===
user32: input.c:756: Test failed: 0 (a4/0): 00 from 00 -> 80 unexpected input.c:756: Test failed: 0 (a4/0): 01 from 01 -> 00 unexpected input.c:756: Test failed: 0 (a4/0): 11 from 01 -> 00 unexpected input.c:756: Test failed: 0 (a4/0): a2 from 01 -> 00 unexpected
=== w1064v1809 (64 bit report) ===
user32: input.c:1432: Test failed: Wrong new pos: (150,150)
=== debiant2 (32 bit report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (32 bit Chinese:China report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (32 bit WoW report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (64 bit WoW report) ===
user32: clipboard.c:760: Test failed: 7: gle 5 clipboard.c:765: Test failed: 7.0: got 0000 instead of 0011 clipboard.c:805: Test failed: 7: gle 1418 clipboard.c:815: Test failed: 7: count 3 clipboard.c:818: Test failed: 7: gle 1418 clipboard.c:852: Test failed: 7: format 0011 got data 00BB92B8 clipboard.c:853: Test failed: 7.0: formats 00000000 have been rendered clipboard.c:858: Test failed: 7.0: formats 00000000 have been rendered clipboard.c:852: Test failed: 7: format 0002 got data 0009003F clipboard.c:853: Test failed: 7.1: formats 00000000 have been rendered clipboard.c:858: Test failed: 7.1: formats 00000000 have been rendered clipboard.c:852: Test failed: 7: format 0008 got data 00BB9F48 clipboard.c:853: Test failed: 7.2: formats 00000000 have been rendered clipboard.c:858: Test failed: 7.2: formats 00000000 have been rendered win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/user32/input.c | 16 ++++++++++------ include/winuser.h | 10 ++++++++++ 2 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c index dfb6bf7f646..e510b2669fc 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -179,11 +179,13 @@ static void update_mouse_coords( INPUT *input ) */ UINT WINAPI SendInput( UINT count, LPINPUT inputs, int size ) { + WINEINPUT tmp; NTSTATUS status = STATUS_SUCCESS; - INPUT tmp; + BOOL internal; UINT i;
- if (size != sizeof(INPUT)) + internal = count && inputs && inputs[0].type & INPUT_WINE; + if (size != (internal ? sizeof(WINEINPUT) : sizeof(INPUT))) { SetLastError( ERROR_INVALID_PARAMETER ); return 0; @@ -203,16 +205,18 @@ UINT WINAPI SendInput( UINT count, LPINPUT inputs, int size )
for (i = 0; i < count; i++) { - tmp = inputs[i]; + memcpy( &tmp, (char *)inputs + i * size, size ); + if (!(tmp.input.type & INPUT_WINE)) tmp.hwnd = 0; + tmp.input.type &= ~INPUT_WINE;
- switch (tmp.type) + switch (tmp.input.type) { case INPUT_MOUSE: /* we need to update the coordinates to what the server expects */ - update_mouse_coords( &tmp ); + update_mouse_coords( &tmp.input ); /* fallthrough */ case INPUT_KEYBOARD: - status = send_hardware_message( 0, &tmp, SEND_HWMSG_INJECTED ); + status = send_hardware_message( tmp.hwnd, &tmp.input, internal ? 0 : SEND_HWMSG_INJECTED ); break; case INPUT_HARDWARE: SetLastError( ERROR_CALL_NOT_IMPLEMENTED ); diff --git a/include/winuser.h b/include/winuser.h index 53661f6c788..2072f047165 100644 --- a/include/winuser.h +++ b/include/winuser.h @@ -477,6 +477,16 @@ typedef struct tagINPUT } DUMMYUNIONNAME; } INPUT, *PINPUT, *LPINPUT;
+#ifdef __WINESRC__ +/* extension to send hardware input from drivers */ +#define INPUT_WINE 0x80000000 +typedef struct +{ + INPUT input; + HWND hwnd; +} WINEINPUT; +#endif /* __WINESRC__ */ + DECLARE_HANDLE(HRAWINPUT);
typedef struct tagRAWINPUTDEVICELIST
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=86707
Your paranoid android.
=== debiant2 (32 bit report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (32 bit Chinese:China report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (32 bit WoW report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (64 bit WoW report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=86705
Your paranoid android.
=== w2008s64 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w7u_2qxl (32 bit report) ===
user32: input.c:756: Test failed: 0 (a4/0): 00 from 00 -> 80 unexpected
=== w864 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w1064v1507 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w1064v1809 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w1064 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w10pro64 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== wvistau64 (64 bit report) ===
user32: input.c:756: Test failed: 0 (a4/0): 00 from 00 -> 80 unexpected input.c:756: Test failed: 0 (a4/0): 01 from 01 -> 00 unexpected input.c:756: Test failed: 0 (a4/0): 11 from 01 -> 00 unexpected input.c:756: Test failed: 0 (a4/0): a2 from 01 -> 00 unexpected
=== w1064v1809 (64 bit report) ===
user32: input.c:1432: Test failed: Wrong new pos: (150,150)
=== w10pro64_ar (64 bit report) ===
user32: input.c:3240: Test failed: expected WM_LBUTTONDOWN message input.c:3241: Test failed: expected WM_LBUTTONUP message input.c:3268: Test failed: expected WM_NCHITTEST message input.c:3269: Test failed: expected WM_RBUTTONDOWN message input.c:3270: Test failed: expected WM_RBUTTONUP message input.c:3299: Test failed: expected WM_LBUTTONDOWN message input.c:3300: Test failed: expected WM_LBUTTONUP message input.c:3353: Test failed: expected loop with WM_NCHITTEST messages input.c:3406: Test failed: expected WM_LBUTTONDOWN message input.c:3407: Test failed: expected WM_LBUTTONUP message
=== w10pro64_he (64 bit report) ===
user32: input.c:3240: Test failed: expected WM_LBUTTONDOWN message input.c:3241: Test failed: expected WM_LBUTTONUP message input.c:3268: Test failed: expected WM_NCHITTEST message input.c:3269: Test failed: expected WM_RBUTTONDOWN message input.c:3270: Test failed: expected WM_RBUTTONUP message input.c:3299: Test failed: expected WM_LBUTTONDOWN message input.c:3300: Test failed: expected WM_LBUTTONUP message input.c:3353: Test failed: expected loop with WM_NCHITTEST messages input.c:3406: Test failed: expected WM_LBUTTONDOWN message input.c:3407: Test failed: expected WM_LBUTTONUP message
=== debiant2 (32 bit report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (32 bit Chinese:China report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (32 bit WoW report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (64 bit WoW report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE win.c:10097: Test failed: Expected foreground window 0, got 00E10102 win.c:10103: Test failed: Expected foreground window 000E013E, got 00E10102
On 3/9/21 4:07 PM, Marvin wrote:
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=86705
Your paranoid android.
=== w2008s64 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w7u_2qxl (32 bit report) ===
user32: input.c:756: Test failed: 0 (a4/0): 00 from 00 -> 80 unexpected
=== w864 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w1064v1507 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w1064v1809 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w1064 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w10pro64 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== wvistau64 (64 bit report) ===
user32: input.c:756: Test failed: 0 (a4/0): 00 from 00 -> 80 unexpected input.c:756: Test failed: 0 (a4/0): 01 from 01 -> 00 unexpected input.c:756: Test failed: 0 (a4/0): 11 from 01 -> 00 unexpected input.c:756: Test failed: 0 (a4/0): a2 from 01 -> 00 unexpected
=== w1064v1809 (64 bit report) ===
user32: input.c:1432: Test failed: Wrong new pos: (150,150)
=== w10pro64_ar (64 bit report) ===
user32: input.c:3240: Test failed: expected WM_LBUTTONDOWN message input.c:3241: Test failed: expected WM_LBUTTONUP message input.c:3268: Test failed: expected WM_NCHITTEST message input.c:3269: Test failed: expected WM_RBUTTONDOWN message input.c:3270: Test failed: expected WM_RBUTTONUP message input.c:3299: Test failed: expected WM_LBUTTONDOWN message input.c:3300: Test failed: expected WM_LBUTTONUP message input.c:3353: Test failed: expected loop with WM_NCHITTEST messages input.c:3406: Test failed: expected WM_LBUTTONDOWN message input.c:3407: Test failed: expected WM_LBUTTONUP message
=== w10pro64_he (64 bit report) ===
user32: input.c:3240: Test failed: expected WM_LBUTTONDOWN message input.c:3241: Test failed: expected WM_LBUTTONUP message input.c:3268: Test failed: expected WM_NCHITTEST message input.c:3269: Test failed: expected WM_RBUTTONDOWN message input.c:3270: Test failed: expected WM_RBUTTONUP message input.c:3299: Test failed: expected WM_LBUTTONDOWN message input.c:3300: Test failed: expected WM_LBUTTONUP message input.c:3353: Test failed: expected loop with WM_NCHITTEST messages input.c:3406: Test failed: expected WM_LBUTTONDOWN message input.c:3407: Test failed: expected WM_LBUTTONUP message
=== debiant2 (32 bit report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (32 bit Chinese:China report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (32 bit WoW report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (64 bit WoW report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE win.c:10097: Test failed: Expected foreground window 0, got 00E10102 win.c:10103: Test failed: Expected foreground window 000E013E, got 00E10102
I'm probably stupid and missed something here? I really thought I had checked these test results before sending them...
On 3/9/21 6:27 PM, Rémi Bernon wrote:
On 3/9/21 4:07 PM, Marvin wrote:
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=86705
Your paranoid android.
=== w2008s64 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w7u_2qxl (32 bit report) ===
user32: input.c:756: Test failed: 0 (a4/0): 00 from 00 -> 80 unexpected
=== w864 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w1064v1507 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w1064v1809 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w1064 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== w10pro64 (32 bit report) ===
user32: input.c:4144: Test failed: SendInput returned 0, error 0x57
=== wvistau64 (64 bit report) ===
user32: input.c:756: Test failed: 0 (a4/0): 00 from 00 -> 80 unexpected input.c:756: Test failed: 0 (a4/0): 01 from 01 -> 00 unexpected input.c:756: Test failed: 0 (a4/0): 11 from 01 -> 00 unexpected input.c:756: Test failed: 0 (a4/0): a2 from 01 -> 00 unexpected
=== w1064v1809 (64 bit report) ===
user32: input.c:1432: Test failed: Wrong new pos: (150,150)
=== w10pro64_ar (64 bit report) ===
user32: input.c:3240: Test failed: expected WM_LBUTTONDOWN message input.c:3241: Test failed: expected WM_LBUTTONUP message input.c:3268: Test failed: expected WM_NCHITTEST message input.c:3269: Test failed: expected WM_RBUTTONDOWN message input.c:3270: Test failed: expected WM_RBUTTONUP message input.c:3299: Test failed: expected WM_LBUTTONDOWN message input.c:3300: Test failed: expected WM_LBUTTONUP message input.c:3353: Test failed: expected loop with WM_NCHITTEST messages input.c:3406: Test failed: expected WM_LBUTTONDOWN message input.c:3407: Test failed: expected WM_LBUTTONUP message
=== w10pro64_he (64 bit report) ===
user32: input.c:3240: Test failed: expected WM_LBUTTONDOWN message input.c:3241: Test failed: expected WM_LBUTTONUP message input.c:3268: Test failed: expected WM_NCHITTEST message input.c:3269: Test failed: expected WM_RBUTTONDOWN message input.c:3270: Test failed: expected WM_RBUTTONUP message input.c:3299: Test failed: expected WM_LBUTTONDOWN message input.c:3300: Test failed: expected WM_LBUTTONUP message input.c:3353: Test failed: expected loop with WM_NCHITTEST messages input.c:3406: Test failed: expected WM_LBUTTONDOWN message input.c:3407: Test failed: expected WM_LBUTTONUP message
=== debiant2 (32 bit report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (32 bit Chinese:China report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (32 bit WoW report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE
=== debiant2 (64 bit WoW report) ===
user32: win.c:3079: Test succeeded inside todo block: Focus should be on child 000800FE, not 000800FE win.c:10097: Test failed: Expected foreground window 0, got 00E10102 win.c:10103: Test failed: Expected foreground window 000E013E, got 00E10102
I'm probably stupid and missed something here? I really thought I had checked these test results before sending them...
Ah yeah WoW64 gives ERROR_INVALID_PARAMETER instead of ERROR_NOACCESS when passing NULL, great.