Make sure we hold the joystick lock when updating the device state while opening it
diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c
index dfa8877..509a4c4 100644
--- a/src/joystick/SDL_joystick.c
+++ b/src/joystick/SDL_joystick.c
@@ -573,8 +573,6 @@ SDL_JoystickOpen(int device_index)
joystick->next = SDL_joysticks;
SDL_joysticks = joystick;
- SDL_UnlockJoysticks();
-
/* send initial battery event */
initial_power_level = joystick->epowerlevel;
joystick->epowerlevel = SDL_JOYSTICK_POWER_UNKNOWN;
@@ -582,6 +580,8 @@ SDL_JoystickOpen(int device_index)
driver->Update(joystick);
+ SDL_UnlockJoysticks();
+
return joystick;
}