From df0307348d0d74efee83957cc4543cf7a4c7e815 Mon Sep 17 00:00:00 2001 From: Twinaphex Date: Thu, 6 Aug 2015 08:36:46 +0200 Subject: [PATCH] Revert "(iOS) Don't use iteration timers anymore" This reverts commit 6ae26e95ea9189d78d2bbfb7ebd702aa22c70e7d. --- ui/drivers/ui_cocoatouch.m | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 9c05284780..ce373cb2d2 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -37,6 +37,7 @@ static id apple_platform; static CFRunLoopObserverRef iterate_observer; +static CFRunLoopTimerRef iterate_timer; /* forward declaration */ void apple_rarch_exited(void); @@ -62,6 +63,14 @@ static void rarch_draw(void) rarch_main_data_iterate(); + if (iterate_timer) + { + if (rarch_main_data_active()) + CFRunLoopAddTimer(CFRunLoopGetMain(), iterate_timer, kCFRunLoopCommonModes); + else + CFRunLoopRemoveTimer(CFRunLoopGetMain(), iterate_timer, kCFRunLoopCommonModes); + } + if (ret == -1) { main_exit_save_config(); @@ -300,9 +309,23 @@ void apple_start_iterate_observer(void) CFRunLoopAddObserver(CFRunLoopGetMain(), iterate_observer, kCFRunLoopCommonModes); } +void apple_start_iterate_timer(void) +{ + CFTimeInterval interval; + + if (iterate_timer) + return; + + // This number is a double measured in seconds. + interval = 1.0 / 60.0 / 1000.0; + + iterate_timer = CFRunLoopTimerCreate(0, interval, interval, 0, 0, rarch_draw_timer, 0); +} + - (void) apple_start_iteration { apple_start_iterate_observer(); + apple_start_iterate_timer(); } void apple_stop_iterate_observer(void) @@ -315,9 +338,20 @@ void apple_stop_iterate_observer(void) iterate_observer = NULL; } +void apple_stop_iterate_timer(void) +{ + if (!iterate_timer) + return; + + CFRunLoopTimerInvalidate(iterate_timer); + CFRelease(iterate_timer); + iterate_timer = NULL; +} + - (void) apple_stop_iteration { apple_stop_iterate_observer(); + apple_stop_iterate_timer(); } - (void)applicationDidEnterBackground:(UIApplication *)application