diff --git a/apple/common/RetroArch_Apple.h b/apple/common/RetroArch_Apple.h index b8616ae78e..4850e060bb 100644 --- a/apple/common/RetroArch_Apple.h +++ b/apple/common/RetroArch_Apple.h @@ -48,7 +48,12 @@ extern RAModuleInfo* apple_core; extern id apple_platform; // main.m -enum basic_event_t { RESET = 1, LOAD_STATE = 2, SAVE_STATE = 3, QUIT = 4 }; +enum basic_event_t { + RESET = 1, + LOAD_STATE = 2, + SAVE_STATE = 3, + QUIT = 4 +}; extern void apple_event_basic_command(void* userdata); extern void apple_event_set_state_slot(void* userdata); extern void apple_event_show_rgui(void* userdata); diff --git a/apple/common/main.m b/apple/common/main.m index 81e8075029..a56ce6a5e8 100644 --- a/apple/common/main.m +++ b/apple/common/main.m @@ -27,77 +27,6 @@ char** apple_argv; id apple_platform; -void apple_event_basic_command(void* userdata) -{ - switch ((enum basic_event_t)userdata) - { - case RESET: rarch_game_reset(); return; - case LOAD_STATE: rarch_load_state(); return; - case SAVE_STATE: rarch_save_state(); return; - case QUIT: g_extern.system.shutdown = true; return; - } -} - -void apple_event_set_state_slot(void* userdata) -{ - g_extern.state_slot = (uint32_t)userdata; -} - -void apple_event_show_rgui(void* userdata) -{ - const bool in_menu = g_extern.lifecycle_state & (1 << MODE_MENU); - g_extern.lifecycle_state &= ~(1ULL << (in_menu ? MODE_MENU : MODE_GAME)); - g_extern.lifecycle_state |= (1ULL << (in_menu ? MODE_GAME : MODE_MENU)); -} - -static void event_reload_config(void* userdata) -{ - objc_clear_config_hack(); - - uninit_drivers(); - config_load(); - init_drivers(); -} - -void apple_refresh_config() -{ - if (apple_is_running) - apple_frontend_post_event(&event_reload_config, 0); - else - objc_clear_config_hack(); -} - -pthread_mutex_t stasis_mutex = PTHREAD_MUTEX_INITIALIZER; - -static void event_stasis(void* userdata) -{ - uninit_drivers(); - pthread_mutex_lock(&stasis_mutex); - pthread_mutex_unlock(&stasis_mutex); - init_drivers(); -} - -void apple_enter_stasis() -{ - if (apple_is_running) - { - pthread_mutex_lock(&stasis_mutex); - apple_frontend_post_event(event_stasis, 0); - } -} - -void apple_exit_stasis(bool reload_config) -{ - if (reload_config) - { - objc_clear_config_hack(); - config_load(); - } - - if (apple_is_running) - pthread_mutex_unlock(&stasis_mutex); -} - #pragma mark EMULATION static pthread_t apple_retro_thread; bool apple_is_paused; diff --git a/frontend/platform/platform_apple.c b/frontend/platform/platform_apple.c index ba03b86618..3bd517ec91 100644 --- a/frontend/platform/platform_apple.c +++ b/frontend/platform/platform_apple.c @@ -49,6 +49,85 @@ void apple_frontend_post_event(void (*fn)(void*), void* userdata) pthread_mutex_unlock(&apple_event_queue_lock); } +void apple_event_basic_command(void* userdata) +{ + switch ((enum basic_event_t)userdata) + { + case RESET: + rarch_game_reset(); + return; + case LOAD_STATE: + rarch_load_state(); + return; + case SAVE_STATE: + rarch_save_state(); + return; + case QUIT: + g_extern.system.shutdown = true; + return; + } +} + +void apple_event_set_state_slot(void* userdata) +{ + g_extern.state_slot = (uint32_t)userdata; +} + +void apple_event_show_rgui(void* userdata) +{ + const bool in_menu = g_extern.lifecycle_state & (1 << MODE_MENU); + g_extern.lifecycle_state &= ~(1ULL << (in_menu ? MODE_MENU : MODE_GAME)); + g_extern.lifecycle_state |= (1ULL << (in_menu ? MODE_GAME : MODE_MENU)); +} + +static void event_reload_config(void* userdata) +{ + objc_clear_config_hack(); + + uninit_drivers(); + config_load(); + init_drivers(); +} + +void apple_refresh_config() +{ + if (apple_is_running) + apple_frontend_post_event(&event_reload_config, 0); + else + objc_clear_config_hack(); +} + +pthread_mutex_t stasis_mutex = PTHREAD_MUTEX_INITIALIZER; + +static void event_stasis(void* userdata) +{ + uninit_drivers(); + pthread_mutex_lock(&stasis_mutex); + pthread_mutex_unlock(&stasis_mutex); + init_drivers(); +} + +void apple_enter_stasis() +{ + if (apple_is_running) + { + pthread_mutex_lock(&stasis_mutex); + apple_frontend_post_event(event_stasis, 0); + } +} + +void apple_exit_stasis(bool reload_config) +{ + if (reload_config) + { + objc_clear_config_hack(); + config_load(); + } + + if (apple_is_running) + pthread_mutex_unlock(&stasis_mutex); +} + static int process_events(void *data) { (void)data;