diff --git a/src/joystick/hidapi/SDL_hidapijoystick.c b/src/joystick/hidapi/SDL_hidapijoystick.c index 4d5d7df413..5a7c59ba94 100644 --- a/src/joystick/hidapi/SDL_hidapijoystick.c +++ b/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;