Fixed crash trying to open HIDAPI controller as a haptics device on Windows

Sam Lantinga 2018-08-22 17:44:28 -07:00
parent 38ae49880f
commit f1bc1c1274
4 changed files with 11 additions and 4 deletions

0
Android.mk Normal file → Executable file
View File

0
Xcode-iOS/Test/TestiPhoneOS.xcodeproj/project.pbxproj Normal file → Executable file
View File

0
Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj Normal file → Executable file
View File

View File

@ -157,7 +157,7 @@ SDL_SYS_HapticMouse(void)
/* Grab the first mouse haptic device we find. */
for (item = SDL_hapticlist; item != NULL; item = item->next) {
if (item->capabilities.dwDevType == DI8DEVCLASS_POINTER ) {
if (item->capabilities.dwDevType == DI8DEVCLASS_POINTER) {
return index;
}
++index;
@ -173,14 +173,16 @@ SDL_SYS_HapticMouse(void)
int
SDL_SYS_JoystickIsHaptic(SDL_Joystick * joystick)
{
const struct joystick_hwdata *hwdata = joystick->hwdata;
if (joystick->driver != &SDL_WINDOWS_JoystickDriver) {
return 0;
}
#if SDL_HAPTIC_XINPUT
if (hwdata->bXInputHaptic) {
if (joystick->hwdata->bXInputHaptic) {
return 1;
}
#endif
#if SDL_HAPTIC_DINPUT
if (hwdata->Capabilities.dwFlags & DIDC_FORCEFEEDBACK) {
if (joystick->hwdata->Capabilities.dwFlags & DIDC_FORCEFEEDBACK) {
return 1;
}
#endif
@ -193,6 +195,9 @@ SDL_SYS_JoystickIsHaptic(SDL_Joystick * joystick)
int
SDL_SYS_JoystickSameHaptic(SDL_Haptic * haptic, SDL_Joystick * joystick)
{
if (joystick->driver != &SDL_WINDOWS_JoystickDriver) {
return 0;
}
if (joystick->hwdata->bXInputHaptic != haptic->hwdata->bXInputHaptic) {
return 0; /* one is XInput, one is not; not the same device. */
} else if (joystick->hwdata->bXInputHaptic) {
@ -208,6 +213,8 @@ SDL_SYS_JoystickSameHaptic(SDL_Haptic * haptic, SDL_Joystick * joystick)
int
SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick)
{
SDL_assert(joystick->driver == &SDL_WINDOWS_JoystickDriver);
if (joystick->hwdata->bXInputDevice) {
return SDL_XINPUT_HapticOpenFromJoystick(haptic, joystick);
} else {