Skip to content
This repository has been archived by the owner. It is now read-only.
Browse files

Fix for Game Center leaderboard screens not always responding to touc…

…h input in iOS apps that don't use SDL_iPhoneSetAnimationCallback
  • Loading branch information
DavidLudwig committed Jul 23, 2012
1 parent 5280cdd commit 08817ddd3c4a2f263c791459e1d56f916de5884f
Showing with 12 additions and 2 deletions.
  1. +12 −2 src/video/uikit/SDL_uikitevents.m
@@ -57,14 +57,24 @@ So what we do is that in the UIApplicationDelegate class (SDLUIApplicationDelega
if (setjmp(*jump_env()) == 0) {
/* if we're setting the jump, rather than jumping back */

/* Let the run loop run for a short amount of time: long enough for
touch events to get processed (which is important to get certain
elements of Game Center's GKLeaderboardViewController to respond
to touch input), but not long enough to introduce a significant
delay in the rest of the app.
const CFTimeInterval seconds = 0.000002;

/* Pump most event types. */
SInt32 result;
do {
result = CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, TRUE);
result = CFRunLoopRunInMode(kCFRunLoopDefaultMode, seconds, TRUE);
} while (result == kCFRunLoopRunHandledSource);

/* Make sure UIScrollView objects scroll properly. */
do {
result = CFRunLoopRunInMode((CFStringRef)UITrackingRunLoopMode, 0, TRUE);
result = CFRunLoopRunInMode((CFStringRef)UITrackingRunLoopMode, seconds, TRUE);
} while(result == kCFRunLoopRunHandledSource);

0 comments on commit 08817dd

Please sign in to comment.