Please sign in to comment.
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixed bug 4477 - Support more than 4 XInput-capable devices on Windows
Jimb Esser Add new RawInput controller API, and improved correlation with XInput/WGI Reorder joystick init so drivers can ask the others if they handle a device reliably Do not poll disconnected XInput devices (major perf issue) Fix various cases where incorrect correlation could happen Simple mechanism for propagating unhandled Guide button presses even before guaranteed correlation Correlate by axis motion as well as button presses Fix failing to zero other trigger Fix SDL_HINT_JOYSTICK_HIDAPI not working if set before calling SDL_Init() Add missing device to device names Disable RawInput if we have a mismatch of XInput-capable but not RawInput-capable devices Updated to SDL 2.0.13 code with the following notes: New HID driver: xbox360w - no idea what that is, hopefully urelated SDL_hidapijoystick.c had been refactored to couple data handling logic with device opening logic and device lists caused some problems, yields slightly uglier integration than previously when the 360 HID device driver was just handling the data. SDL_hidapijoystick.c now often pulls the device off of the joystick_hwdata structure for some rumble logic, but it appears that code path is never reached, so probably not a problem. Looks like joystick_hwdata was refactored to not include a mutex in other drivers, maintainers may want to do the same refactor here if that's useful for some reason. Something changed in how devices get names, so getting generic names. Had to fix a (new?) bug where removing an XInput controller caused existing controllers (that moved to a new XInput index) to get identified as 0x045e/0x02fd ("it's probably Bluetooth" in code), rendering the existing HIDAPI_IsDevicePresent and new RAWINPUT_IsDevicePresent unreliable.
- Loading branch information
Showing with 885 additions and 216 deletions.
- +4 −0 VisualC/SDL/SDL.vcxproj
- +4 −0 VisualC/SDL/SDL.vcxproj.filters
- +2 −0 configure
- +1 −0 configure.ac
- +1 −0 include/SDL_config.h.in
- +1 −0 include/SDL_config_windows.h
- +23 −1 include/SDL_hints.h
- +6 −0 src/joystick/SDL_gamecontroller.c
- +13 −3 src/joystick/SDL_joystick.c
- +3 −0 src/joystick/SDL_joystick_c.h
- +1 −0 src/joystick/SDL_sysjoystick.h
- +4 −4 src/joystick/hidapi/SDL_hidapi_gamecube.c
- +2 −2 src/joystick/hidapi/SDL_hidapi_ps4.c
- +2 −2 src/joystick/hidapi/SDL_hidapi_switch.c
- +734 −186 src/joystick/hidapi/SDL_hidapi_xbox360.c
- +3 −3 src/joystick/hidapi/SDL_hidapi_xbox360w.c
- +3 −3 src/joystick/hidapi/SDL_hidapi_xboxone.c
- +30 −6 src/joystick/hidapi/SDL_hidapijoystick.c
- +6 −4 src/joystick/hidapi/SDL_hidapijoystick_c.h
- +9 −0 src/joystick/windows/SDL_dinputjoystick.c
- +21 −0 src/joystick/windows/SDL_xinputjoystick.c
- +12 −2 src/video/windows/SDL_windowswindow.c
|$as_echo "#define SDL_JOYSTICK_HIDAPI 1" >>confdefs.h|
|$as_echo "#define SDL_JOYSTICK_RAWINPUT 1" >>confdefs.h|
Oops, something went wrong.