Merge pull request #1300 from jeapostrophe/master

Fixing audio/sync problems when gameplay is interrupted by call/etc
This commit is contained in:
Twinaphex 2014-12-22 19:26:24 +01:00
commit b6b3090dd1
2 changed files with 17 additions and 10 deletions

View File

@ -243,16 +243,18 @@ void switch_to_ios() {
}
apple_gamecontroller_init();
apple_start_iteration();
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
apple_start_iteration();
[self showGameView];
}
- (void)applicationWillResignActive:(UIApplication *)application
{
apple_stop_iteration();
[self showPauseMenu: self];
}
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

View File

@ -27,7 +27,7 @@ void apple_start_iteration(void);
void apple_stop_iteration(void);
static CFRunLoopObserverRef iterate_observer;
static CFRunLoopObserverRef iterate_observer = NULL;
static void do_iteration(void)
{
@ -103,17 +103,22 @@ static void do_iteration(void)
void apple_start_iteration(void)
{
iterate_observer = CFRunLoopObserverCreate(0, kCFRunLoopBeforeWaiting,
true, 0, (CFRunLoopObserverCallBack)do_iteration, 0);
CFRunLoopAddObserver(CFRunLoopGetMain(), iterate_observer,
kCFRunLoopCommonModes);
if (iterate_observer == NULL) {
iterate_observer =
CFRunLoopObserverCreate(0, kCFRunLoopBeforeWaiting,
true, 0, (CFRunLoopObserverCallBack)do_iteration, 0);
CFRunLoopAddObserver(CFRunLoopGetMain(), iterate_observer,
kCFRunLoopCommonModes);
}
}
void apple_stop_iteration(void)
{
CFRunLoopObserverInvalidate(iterate_observer);
CFRelease(iterate_observer);
iterate_observer = 0;
if (iterate_observer != NULL) {
CFRunLoopObserverInvalidate(iterate_observer);
CFRelease(iterate_observer);
iterate_observer = NULL;
}
}
static void frontend_apple_get_environment_settings(int *argc, char *argv[],