Module: wine Branch: master Commit: da8a36c50e13595a2714733199cd82deb0017f59 URL: https://gitlab.winehq.org/wine/wine/-/commit/da8a36c50e13595a2714733199cd82d...
Author: Andrey Gusev andrey.goosev@gmail.com Date: Tue Aug 30 17:15:47 2022 +0300
user32: Implement DefRawInputProc.
Used in The Testament of Sherlock Holmes on mouse move.
---
dlls/user32/input.c | 4 ++-- dlls/user32/tests/input.c | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/input.c b/dlls/user32/input.c index a329150f745..bb7477ed482 100644 --- a/dlls/user32/input.c +++ b/dlls/user32/input.c @@ -649,7 +649,7 @@ UINT WINAPI GetRawInputDeviceInfoA( HANDLE device, UINT command, void *data, UIN */ LRESULT WINAPI DefRawInputProc( RAWINPUT **data, INT data_count, UINT header_size ) { - FIXME( "data %p, data_count %d, header_size %u stub!\n", data, data_count, header_size ); + TRACE( "data %p, data_count %d, header_size %u.\n", data, data_count, header_size );
- return 0; + return header_size == sizeof(RAWINPUTHEADER) ? 0 : -1; } diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c index f508ed69b74..8477645fad5 100644 --- a/dlls/user32/tests/input.c +++ b/dlls/user32/tests/input.c @@ -2900,6 +2900,25 @@ static void test_rawinput(const char* argv0) CloseDesktop(params.desk); }
+static void test_DefRawInputProc(void) +{ + LRESULT ret; + + SetLastError(0xdeadbeef); + ret = DefRawInputProc(NULL, 0, sizeof(RAWINPUTHEADER)); + ok(!ret, "got %Id\n", ret); + ok(GetLastError() == 0xdeadbeef, "got %ld\n", GetLastError()); + ret = DefRawInputProc(LongToPtr(0xcafe), 0xbeef, sizeof(RAWINPUTHEADER)); + ok(!ret, "got %Id\n", ret); + ok(GetLastError() == 0xdeadbeef, "got %ld\n", GetLastError()); + ret = DefRawInputProc(NULL, 0, sizeof(RAWINPUTHEADER) - 1); + ok(ret == -1, "got %Id\n", ret); + ok(GetLastError() == 0xdeadbeef, "got %ld\n", GetLastError()); + ret = DefRawInputProc(NULL, 0, sizeof(RAWINPUTHEADER) + 1); + ok(ret == -1, "got %Id\n", ret); + ok(GetLastError() == 0xdeadbeef, "got %ld\n", GetLastError()); +} + static void test_key_map(void) { HKL kl = GetKeyboardLayout(0); @@ -4589,6 +4608,7 @@ START_TEST(input) test_GetRawInputBuffer(); test_RegisterRawInputDevices(); test_rawinput(argv[0]); + test_DefRawInputProc();
if(pGetMouseMovePointsEx) test_GetMouseMovePointsEx(argv[0]);