Przeglądaj źródła

Allow Android to ignore unnecessary joysticks

Previously, SDL_ShouldIgnoreJoystick wasn't being called for Android, and fingerprint sensors were recognized as joysticks.

(cherry picked from commit 1af7dfb0a7cb75a682ec0c6eb8ed40ada818688e)
Nintorch 1 miesiąc temu
rodzic
commit
2743716132

+ 2 - 2
src/joystick/SDL_gamepad.c

@@ -2683,8 +2683,8 @@ bool SDL_ShouldIgnoreGamepad(Uint16 vendor_id, Uint16 product_id, Uint16 version
     }
 #endif
 
-    if (name && SDL_strcmp(name, "uinput-fpc") == 0) {
-        // The Google Pixel fingerprint sensor reports itself as a joystick
+    if (name && SDL_startswith(name, "uinput-")) {
+        // The Google Pixel fingerprint sensor, as well as other fingerprint sensors, reports itself as a joystick
         return true;
     }
 

+ 4 - 0
src/joystick/android/SDL_sysjoystick.c

@@ -328,6 +328,10 @@ void Android_AddJoystick(int device_id, const char *name, const char *desc, int
         goto done;
     }
 
+    if (SDL_ShouldIgnoreJoystick(vendor_id, product_id, 0, name)) {
+        goto done;
+    }
+
 #ifdef DEBUG_JOYSTICK
     SDL_Log("Joystick: %s, descriptor %s, vendor = 0x%.4x, product = 0x%.4x, %d axes, %d hats", name, desc, vendor_id, product_id, naxes, nhats);
 #endif