1
0
mirror of https://github.com/libretro/RetroArch synced 2024-07-08 20:25:47 +00:00

On iOS, pause while in background (#14907)

This commit is contained in:
warmenhoven 2023-01-26 14:10:01 -05:00 committed by GitHub
parent 940ad64d41
commit 10ace666e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 7 deletions

View File

@ -1405,6 +1405,8 @@
"-DHAVE_PATCH",
"-DHAVE_UPDATE_CORE_INFO",
"-DHAVE_VULKAN",
"-D_7ZIP_ST",
"-DHAVE_7ZIP",
);
PRODUCT_BUNDLE_IDENTIFIER = com.libretro.dist.ios.RetroArch;
PRODUCT_NAME = RetroArch;
@ -1513,6 +1515,8 @@
"-DHAVE_PATCH",
"-DHAVE_UPDATE_CORE_INFO",
"-DHAVE_VULKAN",
"-D_7ZIP_ST",
"-DHAVE_7ZIP",
);
"OTHER_CFLAGS[arch=*]" = (
"-DNS_BLOCK_ASSERTIONS=1",

View File

@ -75,6 +75,27 @@ static void rarch_draw_observer(CFRunLoopObserverRef observer,
CFRunLoopWakeUp(CFRunLoopGetMain());
}
static void rarch_start_draw_observer()
{
if (iterate_observer && CFRunLoopObserverIsValid(iterate_observer))
return;
if (iterate_observer != NULL)
CFRelease(iterate_observer);
iterate_observer = CFRunLoopObserverCreate(0, kCFRunLoopBeforeWaiting,
true, 0, rarch_draw_observer, 0);
CFRunLoopAddObserver(CFRunLoopGetMain(), iterate_observer, kCFRunLoopCommonModes);
}
static void rarch_stop_draw_observer()
{
if (!iterate_observer || !CFRunLoopObserverIsValid(iterate_observer))
return;
CFRunLoopObserverInvalidate(iterate_observer);
CFRelease(iterate_observer);
iterate_observer = NULL;
}
apple_frontend_settings_t apple_frontend_settings;
void get_ios_version(int *major, int *minor)
@ -417,9 +438,7 @@ enum
rarch_main(argc, argv, NULL);
iterate_observer = CFRunLoopObserverCreate(0, kCFRunLoopBeforeWaiting,
true, 0, rarch_draw_observer, 0);
CFRunLoopAddObserver(CFRunLoopGetMain(), iterate_observer, kCFRunLoopCommonModes);
rarch_start_draw_observer();
#ifdef HAVE_MFI
extern void *apple_gamecontroller_joypad_init(void *data);
@ -427,17 +446,20 @@ enum
#endif
}
- (void)applicationDidEnterBackground:(UIApplication *)application { }
- (void)applicationDidEnterBackground:(UIApplication *)application
{
rarch_stop_draw_observer();
}
- (void)applicationWillTerminate:(UIApplication *)application
{
CFRunLoopObserverInvalidate(iterate_observer);
CFRelease(iterate_observer);
iterate_observer = NULL;
rarch_stop_draw_observer();
retroarch_main_quit();
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
rarch_start_draw_observer();
settings_t *settings = config_get_ptr();
bool ui_companion_start_on_boot = settings->bools.ui_companion_start_on_boot;