Procházet zdrojové kódy

joystick: Fix rumble issues on PS5 HIDAPI controllers

We were returning the report size from HIDAPI_DriverPS5_RumbleJoystick() rather
than 0 upon success, causing SDL_JoystickRumble() (and callers) to think that
rumbling failed.

This didn't cause major problems until 1868c5b, when it started preventing
rumble state from being persisted in the joystick core, even though it was
successfully sent to the hardware.

This led to all sorts of strangeness, including broken rumble duration and
attempts to stop rumble being discarded.
Cameron Gutman před 3 roky
rodič
revize
2c04df8d65
1 změnil soubory, kde provedl 5 přidání a 1 odebrání
  1. 5 1
      src/joystick/hidapi/SDL_hidapi_ps5.c

+ 5 - 1
src/joystick/hidapi/SDL_hidapi_ps5.c

@@ -747,7 +747,11 @@ HIDAPI_DriverPS5_SendJoystickEffect(SDL_HIDAPI_Device *device, SDL_Joystick *joy
         }
     }
 
-    return SDL_HIDAPI_SendRumbleAndUnlock(device, data, report_size);
+    if (SDL_HIDAPI_SendRumbleAndUnlock(device, data, report_size) != report_size) {
+        return -1;
+    }
+
+    return 0;
 }
 
 static int