diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c index d4a1cedd6c..d6b0e1e37b 100644 --- a/src/joystick/linux/SDL_sysjoystick.c +++ b/src/joystick/linux/SDL_sysjoystick.c @@ -216,6 +216,11 @@ static bool IsVirtualJoystick(Uint16 vendor, Uint16 product, Uint16 version, con } return false; } +#else +static bool IsVirtualJoystick(Uint16 vendor, Uint16 product, Uint16 version, const char *name) +{ + return false; +} #endif // SDL_JOYSTICK_HIDAPI static bool GetSteamVirtualGamepadSlot(int fd, int *slot) @@ -661,9 +666,13 @@ static void HandlePendingRemovals(void) static bool SteamControllerConnectedCallback(const char *name, SDL_GUID guid, SDL_JoystickID *device_instance) { - SDL_joylist_item *item; + Uint16 vendor, product, version; + SDL_GetJoystickGUIDInfo(guid, &vendor, &product, &version, NULL); + if (SDL_JoystickHandledByAnotherDriver(&SDL_LINUX_JoystickDriver, vendor, product, version, name)) { + return false; + } - item = (SDL_joylist_item *)SDL_calloc(1, sizeof(SDL_joylist_item)); + SDL_joylist_item *item = (SDL_joylist_item *)SDL_calloc(1, sizeof(SDL_joylist_item)); if (!item) { return false; }