Vitaliy Margolen : dinput:
Pass complete DataFormat structure to find_property.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Jan 10 05:36:06 CST 2007
Module: wine
Branch: master
Commit: cd306046bb94c69a78433749facbacd86817bec1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=cd306046bb94c69a78433749facbacd86817bec1
Author: Vitaliy Margolen <wine-patches at 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];
More information about the wine-cvs
mailing list