Module: wine Branch: master Commit: cd306046bb94c69a78433749facbacd86817bec1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cd306046bb94c69a78433749fa...
Author: Vitaliy Margolen wine-patches@kievinfo.com Date: Tue Jan 9 13:43:36 2007 -0700
dinput: Pass complete DataFormat structure to find_property.
---
dlls/dinput/device.c | 6 +++--- dlls/dinput/device_private.h | 2 +- dlls/dinput/joystick_linux.c | 24 +++++++++++++++--------- dlls/dinput/joystick_linuxinput.c | 9 ++++++--- 4 files changed, 25 insertions(+), 16 deletions(-)
diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c index 34a721d..edf8350 100644 --- a/dlls/dinput/device.c +++ b/dlls/dinput/device.c @@ -518,12 +518,12 @@ int id_to_offset(DataFormat *df, int id) return obj >= 0 && df->offsets ? df->offsets[obj] : -1; }
-int find_property(LPCDIDATAFORMAT df, LPCDIPROPHEADER ph) +int find_property(DataFormat *df, LPCDIPROPHEADER ph) { switch (ph->dwHow) { - case DIPH_BYID: return id_to_object(df, ph->dwObj); - case DIPH_BYOFFSET: return offset_to_object(df, ph->dwObj); + case DIPH_BYID: return id_to_object(df->user_df, ph->dwObj); + case DIPH_BYOFFSET: return offset_to_object(df->user_df, ph->dwObj); } FIXME("Unhandled ph->dwHow=='%04X'\n", (unsigned int)ph->dwHow);
diff --git a/dlls/dinput/device_private.h b/dlls/dinput/device_private.h index 638661a..e541b86 100644 --- a/dlls/dinput/device_private.h +++ b/dlls/dinput/device_private.h @@ -75,7 +75,7 @@ extern void queue_event(LPDIRECTINPUTDEV /* Helper functions to work with data format */ extern int offset_to_object(LPCDIDATAFORMAT df, int offset); extern int id_to_offset(DataFormat *df, int id); -extern int find_property(LPCDIDATAFORMAT df, LPCDIPROPHEADER ph); +extern int find_property(DataFormat *df, LPCDIPROPHEADER ph);
/** * Callback Data used by specific callback diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c index a5d6aad..91ee183 100644 --- a/dlls/dinput/joystick_linux.c +++ b/dlls/dinput/joystick_linux.c @@ -909,7 +909,8 @@ static HRESULT WINAPI JoystickAImpl_SetP This->props[i].lMax = pr->lMax; } } else { - int obj = find_property(This->base.data_format.user_df, ph); + int obj = find_property(&This->base.data_format, ph); + TRACE("proprange(%d,%d) obj=%d\n", pr->lMin, pr->lMax, obj); if (obj >= 0) { This->props[obj].lMin = pr->lMin; @@ -926,7 +927,8 @@ static HRESULT WINAPI JoystickAImpl_SetP for (i = 0; i < This->base.data_format.user_df->dwNumObjs; i++) This->props[i].lDeadZone = pd->dwData; } else { - int obj = find_property(This->base.data_format.user_df, ph); + int obj = find_property(&This->base.data_format, ph); + TRACE("deadzone(%d) obj=%d\n", pd->dwData, obj); if (obj >= 0) { This->props[obj].lDeadZone = pd->dwData; @@ -942,7 +944,8 @@ static HRESULT WINAPI JoystickAImpl_SetP for (i = 0; i < This->base.data_format.user_df->dwNumObjs; i++) This->props[i].lSaturation = pd->dwData; } else { - int obj = find_property(This->base.data_format.user_df, ph); + int obj = find_property(&This->base.data_format, ph); + TRACE("saturation(%d) obj=%d\n", pd->dwData, obj); if (obj >= 0) { This->props[obj].lSaturation = pd->dwData; @@ -1171,8 +1174,9 @@ static HRESULT WINAPI JoystickAImpl_GetP if (!HIWORD(rguid)) { switch (LOWORD(rguid)) { case (DWORD) DIPROP_RANGE: { - LPDIPROPRANGE pr = (LPDIPROPRANGE) pdiph; - int obj = find_property(This->base.data_format.user_df, pdiph); + LPDIPROPRANGE pr = (LPDIPROPRANGE)pdiph; + int obj = find_property(&This->base.data_format, pdiph); + /* The app is querying the current range of the axis * return the lMin and lMax values */ if (obj >= 0) { @@ -1184,8 +1188,9 @@ static HRESULT WINAPI JoystickAImpl_GetP break; } case (DWORD) DIPROP_DEADZONE: { - LPDIPROPDWORD pd = (LPDIPROPDWORD)pdiph; - int obj = find_property(This->base.data_format.user_df, pdiph); + LPDIPROPDWORD pd = (LPDIPROPDWORD)pdiph; + int obj = find_property(&This->base.data_format, pdiph); + if (obj >= 0) { pd->dwData = This->props[obj].lDeadZone; TRACE("deadzone(%d) obj=%d\n", pd->dwData, obj); @@ -1194,8 +1199,9 @@ static HRESULT WINAPI JoystickAImpl_GetP break; } case (DWORD) DIPROP_SATURATION: { - LPDIPROPDWORD pd = (LPDIPROPDWORD)pdiph; - int obj = find_property(This->base.data_format.user_df, pdiph); + LPDIPROPDWORD pd = (LPDIPROPDWORD)pdiph; + int obj = find_property(&This->base.data_format, pdiph); + if (obj >= 0) { pd->dwData = This->props[obj].lSaturation; TRACE("saturation(%d) obj=%d\n", pd->dwData, obj); diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c index b049730..b9c581d 100644 --- a/dlls/dinput/joystick_linuxinput.c +++ b/dlls/dinput/joystick_linuxinput.c @@ -849,7 +849,8 @@ static HRESULT WINAPI JoystickAImpl_SetP This->wantmax[i] = pr->lMax; } } else { - int obj = find_property(This->base.data_format.user_df, ph); + int obj = find_property(&This->base.data_format, ph); + TRACE("proprange(%d,%d) obj=%d\n", pr->lMin, pr->lMax, obj); if (obj >= 0) { This->wantmin[obj] = pr->lMin; @@ -868,7 +869,8 @@ static HRESULT WINAPI JoystickAImpl_SetP This->deadz[i] = pd->dwData; } } else { - int obj = find_property(This->base.data_format.user_df, ph); + int obj = find_property(&This->base.data_format, ph); + TRACE("deadzone(%d) obj=%d\n", pd->dwData, obj); if (obj >= 0) { This->deadz[obj] = pd->dwData; @@ -1127,7 +1129,8 @@ static HRESULT WINAPI JoystickAImpl_GetP switch (LOWORD(rguid)) { case (DWORD) DIPROP_RANGE: { LPDIPROPRANGE pr = (LPDIPROPRANGE) pdiph; - int obj = find_property(This->base.data_format.user_df, pdiph); + int obj = find_property(&This->base.data_format, pdiph); + if (obj >= 0) { pr->lMin = This->joydev->havemin[obj]; pr->lMax = This->joydev->havemax[obj];