From fe3566ca46868974f343c06877be7d87416655dd Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 14 Nov 2024 11:20:25 -0800 Subject: [PATCH] Ignore Steam Controllers in the Linux driver if HIDAPI is handling them --- src/joystick/linux/SDL_sysjoystick.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c index d4a1cedd6..d6b0e1e37 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; }