forked from Mirrors/wine-wine
dinput: Implement X/Y axis granularity and add test.
Signed-off-by: Johann Frei <johann_frei@yahoo.de> Signed-off-by: Alexandre Julliard <julliard@winehq.org>oldstable
parent
0c58f0ed39
commit
4bc1e172ec
|
@ -616,8 +616,21 @@ static HRESULT WINAPI SysMouseWImpl_GetProperty(LPDIRECTINPUTDEVICE8W iface, REF
|
|||
case (DWORD_PTR) DIPROP_GRANULARITY: {
|
||||
LPDIPROPDWORD pr = (LPDIPROPDWORD) pdiph;
|
||||
|
||||
/* We'll just assume that the app asks about the Z axis */
|
||||
pr->dwData = WHEEL_DELTA;
|
||||
if (
|
||||
((pdiph->dwHow == DIPH_BYOFFSET) &&
|
||||
((pdiph->dwObj == DIMOFS_X) ||
|
||||
(pdiph->dwObj == DIMOFS_Y)))
|
||||
||
|
||||
((pdiph->dwHow == DIPH_BYID) &&
|
||||
((pdiph->dwObj == (DIDFT_MAKEINSTANCE(WINE_MOUSE_X_AXIS_INSTANCE) | DIDFT_RELAXIS)) ||
|
||||
(pdiph->dwObj == (DIDFT_MAKEINSTANCE(WINE_MOUSE_Y_AXIS_INSTANCE) | DIDFT_RELAXIS))))
|
||||
){
|
||||
/* Set granularity of X/Y Axis to 1. See MSDN on DIPROP_GRANULARITY */
|
||||
pr->dwData = 1;
|
||||
} else {
|
||||
/* We'll just assume that the app asks about the Z axis */
|
||||
pr->dwData = WHEEL_DELTA;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -161,7 +161,7 @@ static void test_acquire(IDirectInputA *pDI, HWND hwnd)
|
|||
hr = IDirectInputDevice_GetDeviceData(pMouse, sizeof(mouse_state), &mouse_state, &cnt, 0);
|
||||
ok(hr == S_OK && cnt > 0, "GetDeviceData() failed: %08x cnt:%d\n", hr, cnt);
|
||||
|
||||
/* Check for buffer owerflow */
|
||||
/* Check for buffer overflow */
|
||||
for (i = 0; i < 6; i++)
|
||||
mouse_event(MOUSEEVENTF_MOVE, 10 + i, 10 + i, 0, 0);
|
||||
|
||||
|
@ -172,6 +172,27 @@ static void test_acquire(IDirectInputA *pDI, HWND hwnd)
|
|||
hr = IDirectInputDevice_GetDeviceData(pMouse, sizeof(mouse_state), &mouse_state, &cnt, 0);
|
||||
ok(hr == DI_OK && cnt == 1, "GetDeviceData() failed: %08x cnt:%d\n", hr, cnt);
|
||||
|
||||
/* Check for granularity property using BYOFFSET */
|
||||
memset(&di_op, 0, sizeof(di_op));
|
||||
di_op.diph.dwHow = DIPH_BYOFFSET;
|
||||
di_op.diph.dwObj = DIMOFS_Y;
|
||||
di_op.diph.dwSize = sizeof(DIPROPDWORD);
|
||||
di_op.diph.dwHeaderSize = sizeof(DIPROPHEADER);
|
||||
hr = IDirectInputDevice_GetProperty(pMouse, DIPROP_GRANULARITY, &di_op.diph);
|
||||
/* Granularity of Y axis should be 1! */
|
||||
ok(hr == S_OK && di_op.dwData == 1, "GetProperty(): %08x, dwData: %i but should be 1.\n", hr, di_op.dwData);
|
||||
|
||||
/* Check for granularity property using BYID */
|
||||
memset(&di_op, 0, sizeof(di_op));
|
||||
di_op.diph.dwHow = DIPH_BYID;
|
||||
/* WINE_MOUSE_Y_AXIS_INSTANCE := 1 */
|
||||
di_op.diph.dwObj = (DIDFT_MAKEINSTANCE(1) | DIDFT_RELAXIS);
|
||||
di_op.diph.dwSize = sizeof(DIPROPDWORD);
|
||||
di_op.diph.dwHeaderSize = sizeof(DIPROPHEADER);
|
||||
hr = IDirectInputDevice_GetProperty(pMouse, DIPROP_GRANULARITY, &di_op.diph);
|
||||
/* Granularity of Y axis should be 1! */
|
||||
ok(hr == S_OK && di_op.dwData == 1, "GetProperty(): %08x, dwData: %i but should be 1.\n", hr, di_op.dwData);
|
||||
|
||||
if (pMouse) IUnknown_Release(pMouse);
|
||||
|
||||
DestroyWindow( hwnd2 );
|
||||
|
|
Loading…
Reference in New Issue