|
@@ -560,10 +560,6 @@ SDL_SYS_NumJoysticks()
|
|
|
void
|
|
|
SDL_SYS_JoystickDetect()
|
|
|
{
|
|
|
- while (CFRunLoopRunInMode(SDL_JOYSTICK_RUNLOOP_MODE,0,TRUE) == kCFRunLoopRunHandledSource) {
|
|
|
- /* no-op. Pending callbacks will fire in CFRunLoopRunInMode(). */
|
|
|
- }
|
|
|
-
|
|
|
if (s_bDeviceAdded || s_bDeviceRemoved) {
|
|
|
recDevice *device = gpDeviceList;
|
|
|
s_bDeviceAdded = SDL_FALSE;
|
|
@@ -613,6 +609,12 @@ SDL_SYS_JoystickDetect()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // run this after the checks above so we don't set device->removed and delete the device before
|
|
|
+ // SDL_SYS_JoystickUpdate can run to clean up the SDL_Joystick object that owns this device
|
|
|
+ while (CFRunLoopRunInMode(SDL_JOYSTICK_RUNLOOP_MODE,0,TRUE) == kCFRunLoopRunHandledSource) {
|
|
|
+ /* no-op. Pending callbacks will fire in CFRunLoopRunInMode(). */
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/* Function to get the device-dependent name of a joystick */
|