Преглед на файлове

Respect SDL_HINT_JOYSTICK_MFI

QwertyChouskie преди 1 ден
родител
ревизия
0bd95b0430
променени са 2 файла, в които са добавени 14 реда и са изтрити 12 реда
  1. 11 10
      src/joystick/hidapi/SDL_hidapi_xbox360.c
  2. 3 2
      src/joystick/hidapi/SDL_hidapi_xboxone.c

+ 11 - 10
src/joystick/hidapi/SDL_hidapi_xbox360.c

@@ -212,18 +212,19 @@ static bool HIDAPI_DriverXbox360_IsSupportedDevice(SDL_HIDAPI_Device *device, co
     }
 #endif
 #if defined(SDL_PLATFORM_MACOS) && defined(SDL_JOYSTICK_MFI)
-    if (SDL_IsJoystickSteamVirtualGamepad(vendor_id, product_id, version)) {
-        // GCController support doesn't work with the Steam Virtual Gamepad
-        return true;
-    } else {
-        // On macOS when it isn't controlled by the 360Controller driver and
-        // it doesn't look like a Steam virtual gamepad we should rely on
-        // GCController support instead.
-        return false;
+    if (SDL_GetHintBoolean(SDL_HINT_JOYSTICK_MFI, true)) {
+        if (SDL_IsJoystickSteamVirtualGamepad(vendor_id, product_id, version)) {
+            // GCController support doesn't work with the Steam Virtual Gamepad
+            return true;
+        } else {
+            // On macOS when it isn't controlled by the 360Controller driver and
+            // it doesn't look like a Steam virtual gamepad we should rely on
+            // GCController support instead.
+            return false;
+        }
     }
-#else
-    return (type == SDL_GAMEPAD_TYPE_XBOX360);
 #endif
+    return (type == SDL_GAMEPAD_TYPE_XBOX360);
 }
 
 static bool SetSlotLED(SDL_hid_device *dev, Uint8 slot, bool on)

+ 3 - 2
src/joystick/hidapi/SDL_hidapi_xboxone.c

@@ -368,10 +368,11 @@ static bool HIDAPI_DriverXboxOne_IsSupportedDevice(SDL_HIDAPI_Device *device, co
     static const int XBONE_IFACE_PROTOCOL = 208;
 
 #if defined(SDL_PLATFORM_MACOS) && defined(SDL_JOYSTICK_MFI)
-    if (!SDL_IsJoystickBluetoothXboxOne(vendor_id, product_id)) {
+    if (SDL_GetHintBoolean(SDL_HINT_JOYSTICK_MFI, true) &&
+        !SDL_IsJoystickBluetoothXboxOne(vendor_id, product_id)) {
         // On macOS we get a shortened version of the real report and
         // you can't write output reports for wired controllers, so
-        // we'll just use the GCController support instead.
+        // we'll just use the GCController support instead, if available.
         return false;
     }
 #endif