- fixed crash if you removed a device twice, the deviceRef is invalid if removed from the removed device callback (added in http://hg.libsdl.org/SDL/rev/d4e4d0fcda03 ).

This commit is contained in:
Alfred Reynolds 2014-06-13 10:50:24 -07:00
parent 8719a76535
commit 8c2c744ad5

View file

@ -139,6 +139,7 @@ JoystickDeviceWasRemovedCallback(void *ctx, IOReturn result, void *sender)
{ {
recDevice *device = (recDevice *) ctx; recDevice *device = (recDevice *) ctx;
device->removed = 1; device->removed = 1;
device->deviceRef = NULL; // deviceRef was invalidated due to the remove
#if SDL_HAPTIC_IOKIT #if SDL_HAPTIC_IOKIT
MacHaptic_MaybeRemoveDevice(device->ffservice); MacHaptic_MaybeRemoveDevice(device->ffservice);
#endif #endif
@ -603,6 +604,7 @@ SDL_SYS_JoystickDetect()
SDL_bool SDL_bool
SDL_SYS_JoystickNeedsPolling() SDL_SYS_JoystickNeedsPolling()
{ {
// BUGBUG - only works if someone else is pumping the CFRunLoop...
return s_bDeviceAdded || s_bDeviceRemoved; return s_bDeviceAdded || s_bDeviceRemoved;
} }