|
@@ -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 {
|