Skip to content
Permalink
Browse files

Handle potentially calling SDL_JoystickUpdate() and SDL_JoystickQuit(…

…) at the same time.
  • Loading branch information
slouken committed Mar 27, 2019
1 parent 2fbfe8b commit 9a8d5215c6f6ce426a94f70ef7cc0dc5c2bd187a
Showing with 7 additions and 3 deletions.
  1. +7 −3 src/joystick/SDL_joystick.c
@@ -699,9 +699,12 @@ SDL_JoystickQuit(void)
int i;

/* Make sure we're not getting called in the middle of updating joysticks */
SDL_assert(!SDL_updating_joystick);

SDL_LockJoysticks();
while (SDL_updating_joystick) {
SDL_UnlockJoysticks();
SDL_Delay(1);
SDL_LockJoysticks();
}

/* Stop the event polling */
while (SDL_joysticks) {
@@ -724,8 +727,9 @@ SDL_JoystickQuit(void)
SDL_JoystickAllowBackgroundEventsChanged, NULL);

if (SDL_joystick_lock) {
SDL_DestroyMutex(SDL_joystick_lock);
SDL_mutex *mutex = SDL_joystick_lock;
SDL_joystick_lock = NULL;
SDL_DestroyMutex(mutex);
}

SDL_GameControllerQuitMappings();

0 comments on commit 9a8d521

Please sign in to comment.