Commit 4e0fb110c805e262d028f815bca95915c4bfc1ec

Cameron Gutman 2020-03-07T19:21:21

Clear the old player index slot when moving to a new one

diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c
index 929f958..95aac9c 100644
--- a/src/joystick/SDL_joystick.c
+++ b/src/joystick/SDL_joystick.c
@@ -146,6 +146,7 @@ SDL_SetJoystickIDForPlayerIndex(int player_index, SDL_JoystickID instance_id)
     SDL_JoystickID existing_instance = SDL_GetJoystickIDForPlayerIndex(player_index);
     SDL_JoystickDriver *driver;
     int device_index;
+    int existing_player_index;
 
     if (player_index < 0) {
         return SDL_FALSE;
@@ -165,6 +166,12 @@ SDL_SetJoystickIDForPlayerIndex(int player_index, SDL_JoystickID instance_id)
         return SDL_TRUE;
     }
 
+    /* Clear the old player index */
+    existing_player_index = SDL_GetPlayerIndexForJoystickID(instance_id);
+    if (existing_player_index >= 0) {
+        SDL_joystick_players[existing_player_index] = -1;
+    }
+
     SDL_joystick_players[player_index] = instance_id;
 
     /* Update the driver with the new index */