Lucas Zawacki : dinput: Implement GetProperty for JOYSTICKID (Linux driver) .

Alexandre Julliard julliard at winehq.org
Wed May 30 13:18:52 CDT 2012


Module: wine
Branch: master
Commit: fbfdc6db650b6d1038dd193375b1880a95c0d535
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=fbfdc6db650b6d1038dd193375b1880a95c0d535

Author: Lucas Zawacki <lfzawacki at gmail.com>
Date:   Tue May 29 13:42:26 2012 -0300

dinput: Implement GetProperty for JOYSTICKID (Linux driver).

---

 dlls/dinput/joystick_linux.c |   40 ++++++++++++++++++++++++++++++++++++++--
 include/dinput.h             |    1 +
 2 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c
index d951e76..5afd07c 100644
--- a/dlls/dinput/joystick_linux.c
+++ b/dlls/dinput/joystick_linux.c
@@ -542,6 +542,42 @@ static HRESULT WINAPI JoystickLinuxAImpl_Acquire(LPDIRECTINPUTDEVICE8A iface)
 }
 
 /******************************************************************************
+  *     GetProperty : get input device properties
+  */
+static HRESULT WINAPI JoystickLinuxWImpl_GetProperty(LPDIRECTINPUTDEVICE8W iface, REFGUID rguid, LPDIPROPHEADER pdiph)
+{
+    JoystickImpl *This = impl_from_IDirectInputDevice8W(iface);
+
+    TRACE("(this=%p,%s,%p)\n", iface, debugstr_guid(rguid), pdiph);
+    _dump_DIPROPHEADER(pdiph);
+
+    if (!IS_DIPROP(rguid)) return DI_OK;
+
+    switch (LOWORD(rguid)) {
+
+        case (DWORD_PTR) DIPROP_JOYSTICKID:
+        {
+            LPDIPROPDWORD pd = (LPDIPROPDWORD)pdiph;
+
+            pd->dwData = get_joystick_index(&This->generic.base.guid);
+            TRACE("DIPROP_JOYSTICKID(%d)\n", pd->dwData);
+            break;
+        }
+
+    default:
+        return JoystickWGenericImpl_GetProperty(iface, rguid, pdiph);
+    }
+
+    return DI_OK;
+}
+
+static HRESULT WINAPI JoystickLinuxAImpl_GetProperty(LPDIRECTINPUTDEVICE8A iface, REFGUID rguid, LPDIPROPHEADER pdiph)
+{
+    JoystickImpl *This = impl_from_IDirectInputDevice8A(iface);
+    return JoystickLinuxWImpl_GetProperty(IDirectInputDevice8W_from_impl(This), rguid, pdiph);
+}
+
+/******************************************************************************
   *     Unacquire : frees the joystick
   */
 static HRESULT WINAPI JoystickLinuxWImpl_Unacquire(LPDIRECTINPUTDEVICE8W iface)
@@ -655,7 +691,7 @@ static const IDirectInputDevice8AVtbl JoystickAvt =
         IDirectInputDevice2AImpl_Release,
 	JoystickAGenericImpl_GetCapabilities,
         IDirectInputDevice2AImpl_EnumObjects,
-	JoystickAGenericImpl_GetProperty,
+	JoystickLinuxAImpl_GetProperty,
 	JoystickAGenericImpl_SetProperty,
 	JoystickLinuxAImpl_Acquire,
 	JoystickLinuxAImpl_Unacquire,
@@ -691,7 +727,7 @@ static const IDirectInputDevice8WVtbl JoystickWvt =
     IDirectInputDevice2WImpl_Release,
     JoystickWGenericImpl_GetCapabilities,
     IDirectInputDevice2WImpl_EnumObjects,
-    JoystickWGenericImpl_GetProperty,
+    JoystickLinuxWImpl_GetProperty,
     JoystickWGenericImpl_SetProperty,
     JoystickLinuxWImpl_Acquire,
     JoystickLinuxWImpl_Unacquire,
diff --git a/include/dinput.h b/include/dinput.h
index a6cf7e2..3125800 100644
--- a/include/dinput.h
+++ b/include/dinput.h
@@ -905,6 +905,7 @@ typedef const DIPROPSTRING *LPCDIPROPSTRING;
 
 #define DIPROP_CALIBRATION	MAKEDIPROP(11)
 #define DIPROP_GUIDANDPATH	MAKEDIPROP(12)
+#define DIPROP_JOYSTICKID       MAKEDIPROP(15)
 #define DIPROP_KEYNAME          MAKEDIPROP(20)
 #define DIPROP_VIDPID           MAKEDIPROP(24)
 




More information about the wine-cvs mailing list