Browse Source

Only use the default gamepad mapping if an automatic mapping isn't available

Fixes https://github.com/libsdl-org/SDL/issues/10162

(cherry picked from commit 0f8054cf87e6b221659acca70d2471e05f2133e1)
(cherry picked from commit cd8ea5e3f169250cfe435f58d3b4c6c0d42dd2b2)
Sam Lantinga 9 months ago
parent
commit
80d36aba5b
1 changed files with 4 additions and 4 deletions
  1. 4 4
      src/joystick/SDL_gamecontroller.c

+ 4 - 4
src/joystick/SDL_gamecontroller.c

@@ -1391,9 +1391,6 @@ static ControllerMapping_t *SDL_PrivateGetControllerMappingForNameAndGUID(const
     }
 #endif /* __LINUX__ */
 
-    if (!mapping) {
-        mapping = s_pDefaultMapping;
-    }
     return mapping;
 }
 
@@ -1506,6 +1503,9 @@ static ControllerMapping_t *SDL_PrivateGetControllerMapping(int device_index)
         }
     }
 
+    if (!mapping) {
+        mapping = s_pDefaultMapping;
+    }
     return mapping;
 }
 
@@ -2059,7 +2059,7 @@ SDL_bool SDL_IsGameControllerNameAndGUID(const char *name, SDL_JoystickGUID guid
 
     SDL_LockJoysticks();
     {
-        if (SDL_PrivateGetControllerMappingForNameAndGUID(name, guid) != NULL) {
+        if (s_pDefaultMapping || SDL_PrivateGetControllerMappingForNameAndGUID(name, guid) != NULL) {
             retval = SDL_TRUE;
         } else {
             retval = SDL_FALSE;