Ver código fonte

Add the controller mappings to the linked list in order

Sam Lantinga 8 anos atrás
pai
commit
d834c08ac7
1 arquivos alterados com 15 adições e 2 exclusões
  1. 15 2
      src/joystick/SDL_gamecontroller.c

+ 15 - 2
src/joystick/SDL_gamecontroller.c

@@ -692,9 +692,22 @@ SDL_PrivateAddMappingForGUID(SDL_JoystickGUID jGUID, const char *mappingString,
         pControllerMapping->guid = jGUID;
         pControllerMapping->name = pchName;
         pControllerMapping->mapping = pchMapping;
-        pControllerMapping->next = s_pSupportedControllers;
+        pControllerMapping->next = NULL;
         pControllerMapping->priority = priority;
-        s_pSupportedControllers = pControllerMapping;
+
+        if (s_pSupportedControllers) {
+            /* Add the mapping to the end of the list */
+            ControllerMapping_t *pCurrMapping, *pPrevMapping;
+
+            for ( pPrevMapping = s_pSupportedControllers, pCurrMapping = pPrevMapping->next;
+                  pCurrMapping; 
+                  pPrevMapping = pCurrMapping, pCurrMapping = pCurrMapping->next ) {
+                continue;
+            }
+            pPrevMapping->next = pControllerMapping;
+        } else {
+            s_pSupportedControllers = pControllerMapping;
+        }
         *existing = SDL_FALSE;
     }
     return pControllerMapping;