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 */