Respect SDL_HINT_JOYSTICK_MFI

This commit is contained in:
QwertyChouskie
2026-06-09 07:33:22 -07:00
committed by GitHub
parent 9986c89da0
commit 0bd95b0430
2 changed files with 14 additions and 12 deletions

View File

@@ -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)

View File

@@ -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