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