diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c index 929f9582b..95aac9c6f 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 */