Explorar o código

Don't probe for PlayStation controllers when we already know the controller type

Fixes https://github.com/libsdl-org/SDL/issues/7556
Sam Lantinga %!s(int64=3) %!d(string=hai) anos
pai
achega
655a07bdd8
Modificáronse 1 ficheiros con 7 adicións e 0 borrados
  1. 7 0
      src/joystick/hidapi/SDL_hidapijoystick.c

+ 7 - 0
src/joystick/hidapi/SDL_hidapijoystick.c

@@ -135,6 +135,13 @@ void HIDAPI_DumpPacket(const char *prefix, const Uint8 *data, int size)
 
 SDL_bool HIDAPI_SupportsPlaystationDetection(Uint16 vendor, Uint16 product)
 {
+    /* If we already know the controller is a different type, don't try to detect it.
+     * This fixes a hang with the HORIPAD for Nintendo Switch (0x0f0d/0x00c1)
+     */
+    if (SDL_GetGamepadTypeFromVIDPID(vendor, product, NULL, SDL_FALSE) != SDL_GAMEPAD_TYPE_UNKNOWN) {
+        return SDL_FALSE;
+    }
+
     switch (vendor) {
     case USB_VENDOR_DRAGONRISE:
         return SDL_TRUE;