From: Rémi Bernon rbernon@codeweavers.com
--- dlls/user32/tests/input.c | 44 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c index e9b633ee005..5635aa593e7 100644 --- a/dlls/user32/tests/input.c +++ b/dlls/user32/tests/input.c @@ -86,6 +86,9 @@ static BOOL (WINAPI *pIsMouseInPointerEnabled)(void); static BOOL (WINAPI *pGetCurrentInputMessageSource)( INPUT_MESSAGE_SOURCE *source ); static BOOL (WINAPI *pGetPointerType)(UINT32, POINTER_INPUT_TYPE*); static BOOL (WINAPI *pGetPointerInfo)(UINT32, POINTER_INFO*); +static BOOL (WINAPI *pGetPointerInfoHistory)(UINT32, UINT32*, POINTER_INFO*); +static BOOL (WINAPI *pGetPointerFrameInfo)(UINT32, UINT32*, POINTER_INFO*); +static BOOL (WINAPI *pGetPointerFrameInfoHistory)(UINT32, UINT32*, UINT32*, POINTER_INFO*); static int (WINAPI *pGetMouseMovePointsEx) (UINT, LPMOUSEMOVEPOINT, LPMOUSEMOVEPOINT, int, DWORD); static UINT (WINAPI *pGetRawInputDeviceList) (PRAWINPUTDEVICELIST, PUINT, UINT); static UINT (WINAPI *pGetRawInputDeviceInfoW) (HANDLE, UINT, void *, UINT *); @@ -156,6 +159,9 @@ static void init_function_pointers(void) GET_PROC(GetCurrentInputMessageSource); GET_PROC(GetMouseMovePointsEx); GET_PROC(GetPointerInfo); + GET_PROC(GetPointerInfoHistory); + GET_PROC(GetPointerFrameInfo); + GET_PROC(GetPointerFrameInfoHistory); GET_PROC(GetPointerType); GET_PROC(GetRawInputDeviceList); GET_PROC(GetRawInputDeviceInfoW); @@ -4583,8 +4589,9 @@ static DWORD CALLBACK test_GetPointerInfo_thread( void *arg )
static void test_GetPointerInfo( BOOL mouse_in_pointer_enabled ) { + POINTER_INFO pointer_info[4], expect_pointer; void *invalid_ptr = (void *)0xdeadbeef; - POINTER_INFO pointer_info[4]; + UINT32 entry_count, pointer_count; POINTER_INPUT_TYPE type; WNDCLASSW cls = { @@ -4710,6 +4717,41 @@ static void test_GetPointerInfo( BOOL mouse_in_pointer_enabled ) res = WaitForSingleObject( thread, 5000 ); ok( !res, "WaitForSingleObject returned %#lx, error %lu\n", res, GetLastError() );
+ expect_pointer = pointer_info[0]; + + memset( pointer_info, 0xa5, sizeof(pointer_info) ); + entry_count = pointer_count = 2; + if (!pGetPointerFrameInfo) ret = FALSE; + else ret = pGetPointerFrameInfo( 1, &pointer_count, pointer_info ); + todo_wine_if(!pGetPointerFrameInfo) + ok( ret, "GetPointerFrameInfo failed, error %lu\n", GetLastError() ); + todo_wine_if(!pGetPointerFrameInfo) + ok( pointer_count == 1, "got pointer_count %u\n", pointer_count ); + todo_wine_if(!pGetPointerFrameInfo) + ok( !memcmp( &expect_pointer, pointer_info, sizeof(expect_pointer) ), "got unexpected pointer info\n" ); + memset( pointer_info, 0xa5, sizeof(pointer_info) ); + entry_count = pointer_count = 2; + if (!pGetPointerInfoHistory) ret = FALSE; + else ret = pGetPointerInfoHistory( 1, &entry_count, pointer_info ); + todo_wine_if(!pGetPointerInfoHistory) + ok( ret, "GetPointerInfoHistory failed, error %lu\n", GetLastError() ); + todo_wine_if(!pGetPointerInfoHistory) + ok( entry_count == 1, "got entry_count %u\n", entry_count ); + todo_wine_if(!pGetPointerInfoHistory) + ok( !memcmp( &expect_pointer, pointer_info, sizeof(expect_pointer) ), "got unexpected pointer info\n" ); + memset( pointer_info, 0xa5, sizeof(pointer_info) ); + entry_count = pointer_count = 2; + if (!pGetPointerFrameInfoHistory) ret = FALSE; + else ret = pGetPointerFrameInfoHistory( 1, &entry_count, &pointer_count, pointer_info ); + todo_wine_if(!pGetPointerFrameInfoHistory) + ok( ret, "GetPointerFrameInfoHistory failed, error %lu\n", GetLastError() ); + todo_wine_if(!pGetPointerFrameInfoHistory) + ok( entry_count == 1, "got pointer_count %u\n", pointer_count ); + todo_wine_if(!pGetPointerFrameInfoHistory) + ok( pointer_count == 1, "got pointer_count %u\n", pointer_count ); + todo_wine_if(!pGetPointerFrameInfoHistory) + ok( !memcmp( &expect_pointer, pointer_info, sizeof(expect_pointer) ), "got unexpected pointer info\n" ); + DestroyWindow( hwnd );
ret = UnregisterClassW( L"test", GetModuleHandleW( NULL ) );