Aric Stewart : dinput: Move joystick productGuid and Name to the generic part.

Alexandre Julliard julliard at winehq.org
Tue Mar 10 10:53:30 CDT 2009


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

Author: Aric Stewart <aric at codeweavers.com>
Date:   Mon Mar  9 10:06:50 2009 -0500

dinput: Move joystick productGuid and Name to the generic part.

---

 dlls/dinput/joystick.c         |   71 ++++++++++++++++++++++++++++++++
 dlls/dinput/joystick_linux.c   |   89 ++++------------------------------------
 dlls/dinput/joystick_private.h |    7 +++
 3 files changed, 87 insertions(+), 80 deletions(-)

diff --git a/dlls/dinput/joystick.c b/dlls/dinput/joystick.c
index f6d2271..d1299cb 100644
--- a/dlls/dinput/joystick.c
+++ b/dlls/dinput/joystick.c
@@ -274,3 +274,74 @@ HRESULT WINAPI JoystickAGenericImpl_GetProperty(
 
     return DI_OK;
 }
+
+/******************************************************************************
+  *     GetDeviceInfo : get information about a device's identity
+  */
+HRESULT WINAPI JoystickAGenericImpl_GetDeviceInfo(
+    LPDIRECTINPUTDEVICE8A iface,
+    LPDIDEVICEINSTANCEA pdidi)
+{
+    JoystickGenericImpl *This = (JoystickGenericImpl *)iface;
+
+    TRACE("(%p,%p)\n", iface, pdidi);
+
+    if (pdidi == NULL) {
+        WARN("invalid pointer\n");
+        return E_POINTER;
+    }
+
+    if ((pdidi->dwSize != sizeof(DIDEVICEINSTANCE_DX3A)) &&
+        (pdidi->dwSize != sizeof(DIDEVICEINSTANCEA))) {
+        WARN("invalid parameter: pdidi->dwSize = %d\n", pdidi->dwSize);
+        return DIERR_INVALIDPARAM;
+    }
+
+    /* Return joystick */
+    pdidi->guidInstance = GUID_Joystick;
+    pdidi->guidProduct = This->guidProduct;
+    /* we only support traditional joysticks for now */
+    pdidi->dwDevType = This->devcaps.dwDevType;
+    strcpy(pdidi->tszInstanceName, "Joystick");
+    strcpy(pdidi->tszProductName, This->name);
+    if (pdidi->dwSize > sizeof(DIDEVICEINSTANCE_DX3A)) {
+        pdidi->guidFFDriver = GUID_NULL;
+        pdidi->wUsagePage = 0;
+        pdidi->wUsage = 0;
+    }
+
+    return DI_OK;
+}
+
+/******************************************************************************
+  *     GetDeviceInfo : get information about a device's identity
+  */
+HRESULT WINAPI JoystickWGenericImpl_GetDeviceInfo(
+    LPDIRECTINPUTDEVICE8W iface,
+    LPDIDEVICEINSTANCEW pdidi)
+{
+    JoystickGenericImpl *This = (JoystickGenericImpl *)iface;
+
+    TRACE("(%p,%p)\n", iface, pdidi);
+
+    if ((pdidi->dwSize != sizeof(DIDEVICEINSTANCE_DX3W)) &&
+        (pdidi->dwSize != sizeof(DIDEVICEINSTANCEW))) {
+        WARN("invalid parameter: pdidi->dwSize = %d\n", pdidi->dwSize);
+        return DIERR_INVALIDPARAM;
+    }
+
+    /* Return joystick */
+    pdidi->guidInstance = GUID_Joystick;
+    pdidi->guidProduct = This->guidProduct;
+    /* we only support traditional joysticks for now */
+    pdidi->dwDevType = This->devcaps.dwDevType;
+    MultiByteToWideChar(CP_ACP, 0, "Joystick", -1, pdidi->tszInstanceName, MAX_PATH);
+    MultiByteToWideChar(CP_ACP, 0, This->name, -1, pdidi->tszProductName, MAX_PATH);
+    if (pdidi->dwSize > sizeof(DIDEVICEINSTANCE_DX3W)) {
+        pdidi->guidFFDriver = GUID_NULL;
+        pdidi->wUsagePage = 0;
+        pdidi->wUsage = 0;
+    }
+
+    return DI_OK;
+}
diff --git a/dlls/dinput/joystick_linux.c b/dlls/dinput/joystick_linux.c
index edbdf70..ad9ad02 100644
--- a/dlls/dinput/joystick_linux.c
+++ b/dlls/dinput/joystick_linux.c
@@ -88,7 +88,6 @@ struct JoystickImpl
 	/* joystick private */
 	int				joyfd;
 	DIJOYSTATE2			js;		/* wine data */
-	char				*name;
 	LONG				deadzone;
 	int				*axis_map;
 	int				axes;
@@ -264,13 +263,13 @@ static HRESULT setup_dinput_options(JoystickImpl * device)
     device->axis_map = HeapAlloc(GetProcessHeap(), 0, device->axes * sizeof(int));
     if (!device->axis_map) return DIERR_OUTOFMEMORY;
 
-    if (!get_config_key( hkey, appkey, device->name, buffer, MAX_PATH )) {
+    if (!get_config_key( hkey, appkey, device->generic.name, buffer, MAX_PATH )) {
         static const char *axis_names[] = {"X", "Y", "Z", "Rx", "Ry", "Rz",
                                            "Slider1", "Slider2",
                                            "POV1", "POV2", "POV3", "POV4"};
         const char *delim = ",";
         char * ptr;
-        TRACE("\"%s\" = \"%s\"\n", device->name, buffer);
+        TRACE("\"%s\" = \"%s\"\n", device->generic.name, buffer);
 
         if ((ptr = strtok(buffer, delim)) != NULL) {
             do {
@@ -379,6 +378,8 @@ static HRESULT alloc_device(REFGUID rguid, const void *jvt, IDirectInputImpl *di
         return DIERR_DEVICENOTREG;
     }
 
+    newDevice->generic.guidProduct = DInput_Wine_Joystick_GUID;
+
     /* get the device name */
 #if defined(JSIOCGNAME)
     if (ioctl(newDevice->joyfd,JSIOCGNAME(MAX_PATH),name) < 0) {
@@ -390,8 +391,8 @@ static HRESULT alloc_device(REFGUID rguid, const void *jvt, IDirectInputImpl *di
 #endif
 
     /* copy the device name */
-    newDevice->name = HeapAlloc(GetProcessHeap(),0,strlen(name) + 1);
-    strcpy(newDevice->name, name);
+    newDevice->generic.name = HeapAlloc(GetProcessHeap(),0,strlen(name) + 1);
+    strcpy(newDevice->generic.name, name);
 
 #ifdef JSIOCGAXES
     if (ioctl(newDevice->joyfd,JSIOCGAXES,&newDevice->axes) < 0) {
@@ -504,7 +505,7 @@ FAILED1:
     HeapFree(GetProcessHeap(), 0, df);
     release_DataFormat(&newDevice->generic.base.data_format);
     HeapFree(GetProcessHeap(),0,newDevice->axis_map);
-    HeapFree(GetProcessHeap(),0,newDevice->name);
+    HeapFree(GetProcessHeap(),0,newDevice->generic.name);
     HeapFree(GetProcessHeap(),0,newDevice->generic.props);
     HeapFree(GetProcessHeap(),0,newDevice);
     *pdev = 0;
@@ -763,78 +764,6 @@ static HRESULT WINAPI JoystickAImpl_Poll(LPDIRECTINPUTDEVICE8A iface)
     return DI_OK;
 }
 
-
-/******************************************************************************
-  *     GetDeviceInfo : get information about a device's identity
-  */
-static HRESULT WINAPI JoystickAImpl_GetDeviceInfo(
-    LPDIRECTINPUTDEVICE8A iface,
-    LPDIDEVICEINSTANCEA pdidi)
-{
-    JoystickImpl *This = (JoystickImpl *)iface;
-
-    TRACE("(%p,%p)\n", iface, pdidi);
-
-    if (pdidi == NULL) {
-        WARN("invalid pointer\n");
-        return E_POINTER;
-    }
-
-    if ((pdidi->dwSize != sizeof(DIDEVICEINSTANCE_DX3A)) &&
-        (pdidi->dwSize != sizeof(DIDEVICEINSTANCEA))) {
-        WARN("invalid parameter: pdidi->dwSize = %d\n", pdidi->dwSize);
-        return DIERR_INVALIDPARAM;
-    }
-
-    /* Return joystick */
-    pdidi->guidInstance = GUID_Joystick;
-    pdidi->guidProduct = DInput_Wine_Joystick_GUID;
-    /* we only support traditional joysticks for now */
-    pdidi->dwDevType = This->generic.devcaps.dwDevType;
-    strcpy(pdidi->tszInstanceName, "Joystick");
-    strcpy(pdidi->tszProductName, This->name);
-    if (pdidi->dwSize > sizeof(DIDEVICEINSTANCE_DX3A)) {
-        pdidi->guidFFDriver = GUID_NULL;
-        pdidi->wUsagePage = 0;
-        pdidi->wUsage = 0;
-    }
-
-    return DI_OK;
-}
-
-/******************************************************************************
-  *     GetDeviceInfo : get information about a device's identity
-  */
-static HRESULT WINAPI JoystickWImpl_GetDeviceInfo(
-    LPDIRECTINPUTDEVICE8W iface,
-    LPDIDEVICEINSTANCEW pdidi)
-{
-    JoystickImpl *This = (JoystickImpl *)iface;
-
-    TRACE("(%p,%p)\n", iface, pdidi);
-
-    if ((pdidi->dwSize != sizeof(DIDEVICEINSTANCE_DX3W)) &&
-        (pdidi->dwSize != sizeof(DIDEVICEINSTANCEW))) {
-        WARN("invalid parameter: pdidi->dwSize = %d\n", pdidi->dwSize);
-        return DIERR_INVALIDPARAM;
-    }
-
-    /* Return joystick */
-    pdidi->guidInstance = GUID_Joystick;
-    pdidi->guidProduct = DInput_Wine_Joystick_GUID;
-    /* we only support traditional joysticks for now */
-    pdidi->dwDevType = This->generic.devcaps.dwDevType;
-    MultiByteToWideChar(CP_ACP, 0, "Joystick", -1, pdidi->tszInstanceName, MAX_PATH);
-    MultiByteToWideChar(CP_ACP, 0, This->name, -1, pdidi->tszProductName, MAX_PATH);
-    if (pdidi->dwSize > sizeof(DIDEVICEINSTANCE_DX3W)) {
-        pdidi->guidFFDriver = GUID_NULL;
-        pdidi->wUsagePage = 0;
-        pdidi->wUsage = 0;
-    }
-
-    return DI_OK;
-}
-
 static const IDirectInputDevice8AVtbl JoystickAvt =
 {
 	IDirectInputDevice2AImpl_QueryInterface,
@@ -852,7 +781,7 @@ static const IDirectInputDevice8AVtbl JoystickAvt =
 	IDirectInputDevice2AImpl_SetEventNotification,
 	IDirectInputDevice2AImpl_SetCooperativeLevel,
 	JoystickAGenericImpl_GetObjectInfo,
-	JoystickAImpl_GetDeviceInfo,
+	JoystickAGenericImpl_GetDeviceInfo,
 	IDirectInputDevice2AImpl_RunControlPanel,
 	IDirectInputDevice2AImpl_Initialize,
 	IDirectInputDevice2AImpl_CreateEffect,
@@ -894,7 +823,7 @@ static const IDirectInputDevice8WVtbl JoystickWvt =
 	XCAST(SetEventNotification)IDirectInputDevice2AImpl_SetEventNotification,
 	XCAST(SetCooperativeLevel)IDirectInputDevice2AImpl_SetCooperativeLevel,
         JoystickWGenericImpl_GetObjectInfo,
-	JoystickWImpl_GetDeviceInfo,
+	JoystickWGenericImpl_GetDeviceInfo,
 	XCAST(RunControlPanel)IDirectInputDevice2AImpl_RunControlPanel,
 	XCAST(Initialize)IDirectInputDevice2AImpl_Initialize,
 	XCAST(CreateEffect)IDirectInputDevice2AImpl_CreateEffect,
diff --git a/dlls/dinput/joystick_private.h b/dlls/dinput/joystick_private.h
index 40a3336..36f5b47 100644
--- a/dlls/dinput/joystick_private.h
+++ b/dlls/dinput/joystick_private.h
@@ -35,6 +35,8 @@ typedef struct JoystickGenericImpl
 
     ObjProps    *props;
     DIDEVCAPS   devcaps;
+    GUID        guidProduct;
+    char        *name;
 } JoystickGenericImpl;
 
 
@@ -55,5 +57,10 @@ void _dump_DIDEVCAPS(const DIDEVCAPS *lpDIDevCaps);
 HRESULT WINAPI JoystickAGenericImpl_SetProperty( LPDIRECTINPUTDEVICE8A iface,
     REFGUID rguid, LPCDIPROPHEADER ph);
 
+HRESULT WINAPI JoystickAGenericImpl_GetDeviceInfo( LPDIRECTINPUTDEVICE8A iface,
+    LPDIDEVICEINSTANCEA pdidi);
+
+HRESULT WINAPI JoystickWGenericImpl_GetDeviceInfo( LPDIRECTINPUTDEVICE8W iface,
+    LPDIDEVICEINSTANCEW pdidi);
 
 #endif /* __WINE_DLLS_DINPUT_JOYSTICK_PRIVATE_H */




More information about the wine-cvs mailing list