Commit 9e5504f89d8a42b9d2ed78e8a86734053840cb9b

Ryan C. Gordon 2014-06-13T14:52:26

Mac: Run the CFRunLoop in joystick mode during SDL_SYS_JoystickNeedsPolling(). This fixes hotplugging failing to detect devices.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
diff --git a/src/joystick/darwin/SDL_sysjoystick.c b/src/joystick/darwin/SDL_sysjoystick.c
index 9ad8c44..bdb6d29 100644
--- a/src/joystick/darwin/SDL_sysjoystick.c
+++ b/src/joystick/darwin/SDL_sysjoystick.c
@@ -604,7 +604,9 @@ SDL_SYS_JoystickDetect()
 SDL_bool
 SDL_SYS_JoystickNeedsPolling()
 {
-	// BUGBUG - only works if someone else is pumping the CFRunLoop...
+    while (CFRunLoopRunInMode(SDL_JOYSTICK_RUNLOOP_MODE,0,TRUE) == kCFRunLoopRunHandledSource) {
+        /* no-op. Pending callbacks will fire in CFRunLoopRunInMode(). */
+    }
     return s_bDeviceAdded || s_bDeviceRemoved;
 }