[PATCH] dinput : use vendor and product ids to generate product GUID like it's done on Windows
Corentin Rossignon
corossig at gmail.com
Thu Jul 21 17:03:14 CDT 2016
Signed-off-by: Corentin Rossignon <corossig at gmail.com>
---
dlls/dinput/joystick_linuxinput.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c
index 86f12d0..e5172b6 100644
--- a/dlls/dinput/joystick_linuxinput.c
+++ b/dlls/dinput/joystick_linuxinput.c
@@ -321,13 +321,19 @@ static void find_joydevs(void)
static void fill_joystick_dideviceinstanceA(LPDIDEVICEINSTANCEA lpddi, DWORD version, int id)
{
DWORD dwSize = lpddi->dwSize;
+ // Data1 is concatenation of productid and vendorid, Data4 seems constant
+ GUID product_guid = { ((joydevs[id].product_id)<<16)+joydevs[id].vendor_id,
+ 0x0000,
+ 0x0000,
+ {0x00, 0x00, 0x50, 0x49, 0x44, 0x56, 0x49, 0x44} };
+
TRACE("%d %p\n", dwSize, lpddi);
memset(lpddi, 0, dwSize);
lpddi->dwSize = dwSize;
lpddi->guidInstance = joydevs[id].guid;
- lpddi->guidProduct = DInput_Wine_Joystick_Base_GUID;
+ lpddi->guidProduct = product_guid;
lpddi->guidFFDriver = GUID_NULL;
if (version >= 0x0800)
@@ -342,13 +348,19 @@ static void fill_joystick_dideviceinstanceA(LPDIDEVICEINSTANCEA lpddi, DWORD ver
static void fill_joystick_dideviceinstanceW(LPDIDEVICEINSTANCEW lpddi, DWORD version, int id)
{
DWORD dwSize = lpddi->dwSize;
+ // Data1 is concatenation of productid and vendorid, Data4 seems constant
+ GUID product_guid = { ((joydevs[id].product_id)<<16)+joydevs[id].vendor_id,
+ 0x0000,
+ 0x0000,
+ {0x00, 0x00, 0x50, 0x49, 0x44, 0x56, 0x49, 0x44} };
+
TRACE("%d %p\n", dwSize, lpddi);
memset(lpddi, 0, dwSize);
lpddi->dwSize = dwSize;
lpddi->guidInstance = joydevs[id].guid;
- lpddi->guidProduct = DInput_Wine_Joystick_Base_GUID;
+ lpddi->guidProduct = product_guid;
lpddi->guidFFDriver = GUID_NULL;
if (version >= 0x0800)
--
2.9.0
More information about the wine-patches
mailing list