Browse Source

Ignore Steam Controllers in the Linux driver if HIDAPI is handling them

Sam Lantinga 5 months ago
parent
commit
fe3566ca46
1 changed files with 11 additions and 2 deletions
  1. 11 2
      src/joystick/linux/SDL_sysjoystick.c

+ 11 - 2
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;
     }