Module: wine Branch: master Commit: 40ae0e845571fe3114c44c8a862527a05b15f378 URL: https://source.winehq.org/git/wine.git/?a=commit;h=40ae0e845571fe3114c44c8a8...
Author: Piotr Caban piotr@codeweavers.com Date: Thu May 16 15:47:51 2019 +0200
winebus.sys: Restore IG_ substring in gamepads endpoint path.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47209 Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Aric Stewart aric@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/winebus.sys/bus_iohid.c | 8 ++++++-- dlls/winebus.sys/bus_sdl.c | 8 ++++++-- dlls/winebus.sys/bus_udev.c | 2 ++ 3 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/dlls/winebus.sys/bus_iohid.c b/dlls/winebus.sys/bus_iohid.c index 86f32b6..9b7cc35 100644 --- a/dlls/winebus.sys/bus_iohid.c +++ b/dlls/winebus.sys/bus_iohid.c @@ -290,6 +290,7 @@ static void handle_DeviceMatchingCallback(void *context, IOReturn result, void * CFStringRef str = NULL; WCHAR serial_string[256]; BOOL is_gamepad = FALSE; + WORD input = -1;
TRACE("OS/X IOHID Device Added %p\n", IOHIDDevice);
@@ -344,9 +345,12 @@ static void handle_DeviceMatchingCallback(void *context, IOReturn result, void * is_gamepad = (axes == 6 && buttons >= 14); } } + if (is_gamepad) + input = 0;
- device = bus_create_hid_device(iohid_driver_obj, busidW, vid, pid, -1, version, uid, str?serial_string:NULL, - is_gamepad, &GUID_DEVCLASS_IOHID, &iohid_vtbl, sizeof(struct platform_private)); + device = bus_create_hid_device(iohid_driver_obj, busidW, vid, pid, input, + version, uid, str?serial_string:NULL, is_gamepad, &GUID_DEVCLASS_IOHID, + &iohid_vtbl, sizeof(struct platform_private)); if (!device) ERR("Failed to create device\n"); else diff --git a/dlls/winebus.sys/bus_sdl.c b/dlls/winebus.sys/bus_sdl.c index e669b36..d79c200 100644 --- a/dlls/winebus.sys/bus_sdl.c +++ b/dlls/winebus.sys/bus_sdl.c @@ -891,6 +891,7 @@ static void try_add_device(SDL_JoystickID index) WCHAR serial[34] = {0}; char guid_str[34]; BOOL is_xbox_gamepad; + WORD input = -1;
SDL_Joystick* joystick; SDL_JoystickID id; @@ -941,9 +942,12 @@ static void try_add_device(SDL_JoystickID index) button_count = pSDL_JoystickNumButtons(joystick); is_xbox_gamepad = (axis_count == 6 && button_count >= 14); } + if (is_xbox_gamepad) + input = 0;
- device = bus_create_hid_device(sdl_driver_obj, sdl_busidW, vid, pid, -1, version, id, serial, - is_xbox_gamepad, &GUID_DEVCLASS_SDL, &sdl_vtbl, sizeof(struct platform_private)); + device = bus_create_hid_device(sdl_driver_obj, sdl_busidW, vid, pid, + input, version, id, serial, is_xbox_gamepad, &GUID_DEVCLASS_SDL, + &sdl_vtbl, sizeof(struct platform_private));
if (device) { diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c index bb6c932..a37f7bd 100644 --- a/dlls/winebus.sys/bus_udev.c +++ b/dlls/winebus.sys/bus_udev.c @@ -1205,6 +1205,8 @@ static void try_add_device(struct udev_device *dev) is_gamepad = (axes == 6 && buttons >= 14); } #endif + if (input == (WORD)-1 && is_gamepad) + input = 0;
TRACE("Found udev device %s (vid %04x, pid %04x, version %u, serial %s)\n",