macOS: Use productCategory instead of vendorName for joypad name

This commit is contained in:
sora 2025-09-13 22:16:17 +02:00 committed by Rémi Verschelde
parent 9d84f3d135
commit 92172cab9d
No known key found for this signature in database
GPG key ID: C3336907360768E1
3 changed files with 35 additions and 3 deletions

View file

@ -973,6 +973,7 @@ Patches:
- `0004-errno-include.patch` (GH-108354) - `0004-errno-include.patch` (GH-108354)
- `0005-fix-libudev-dbus.patch` (GH-108373) - `0005-fix-libudev-dbus.patch` (GH-108373)
- `0006-fix-cs-environ.patch` (GH-109283) - `0006-fix-cs-environ.patch` (GH-109283)
- `0007-macos-joypad-name.patch` (GH-110500)
The SDL source code folder includes `hidapi` library inside of folder `thirdparty/sdl/hidapi/`. The SDL source code folder includes `hidapi` library inside of folder `thirdparty/sdl/hidapi/`.
Its version and license is described in this file under `hidapi`. Its version and license is described in this file under `hidapi`.

View file

@ -300,9 +300,15 @@ static bool IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
* struct, and ARC doesn't work with structs. */ * struct, and ARC doesn't work with structs. */
device->controller = (__bridge GCController *)CFBridgingRetain(controller); device->controller = (__bridge GCController *)CFBridgingRetain(controller);
if (controller.vendorName) { if (@available(macOS 10.15, iOS 13.0, tvOS 13.0, *)) {
name = controller.vendorName.UTF8String; if (controller.productCategory) {
} name = controller.productCategory.UTF8String;
}
} else {
if (controller.vendorName) {
name = controller.vendorName.UTF8String;
}
}
if (!name) { if (!name) {
name = "MFi Gamepad"; name = "MFi Gamepad";

View file

@ -0,0 +1,25 @@
diff --git a/thirdparty/sdl/joystick/apple/SDL_mfijoystick.m b/thirdparty/sdl/joystick/apple/SDL_mfijoystick.m
index 811a9f1ae7..2ba2cbeae6 100644
--- a/thirdparty/sdl/joystick/apple/SDL_mfijoystick.m
+++ b/thirdparty/sdl/joystick/apple/SDL_mfijoystick.m
@@ -300,9 +300,15 @@ static bool IOS_AddMFIJoystickDevice(SDL_JoystickDeviceItem *device, GCControlle
* struct, and ARC doesn't work with structs. */
device->controller = (__bridge GCController *)CFBridgingRetain(controller);
- if (controller.vendorName) {
- name = controller.vendorName.UTF8String;
- }
+ if (@available(macOS 10.15, iOS 13.0, tvOS 13.0, *)) {
+ if (controller.productCategory) {
+ name = controller.productCategory.UTF8String;
+ }
+ } else {
+ if (controller.vendorName) {
+ name = controller.vendorName.UTF8String;
+ }
+ }
if (!name) {
name = "MFi Gamepad";
--
2.51.0