From 2b4464f30aae9ecae703ef5a94d165c20637fe5e Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 28 Nov 2015 15:03:59 +0100 Subject: [PATCH] Implement RARCH_MAIN_CTL_IS_IDLE --- gfx/video_driver.c | 5 +---- menu/drivers/menu_generic.c | 5 +---- menu/drivers/rgui.c | 6 +----- runloop.c | 17 ++++++----------- ui/drivers/ui_cocoatouch.m | 5 +---- 5 files changed, 10 insertions(+), 28 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 140960cdde..6a05f1bc0a 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -1145,13 +1145,10 @@ void video_driver_set_pixel_format(enum retro_pixel_format fmt) **/ static bool video_driver_cached_frame(void) { - bool is_idle; driver_t *driver = driver_get_ptr(); void *recording = driver ? driver->recording_data : NULL; - rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, &is_idle); - - if (is_idle) + if (rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, NULL)) return true; /* Maybe return false here for indication of idleness? */ /* Cannot allow recording when pushing duped frames. */ diff --git a/menu/drivers/menu_generic.c b/menu/drivers/menu_generic.c index 166b1196ec..72fcc41127 100644 --- a/menu/drivers/menu_generic.c +++ b/menu/drivers/menu_generic.c @@ -329,7 +329,6 @@ end: int menu_iterate_render(void) { - bool is_idle; const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); @@ -362,9 +361,7 @@ int menu_iterate_render(void) driver->render(); } - rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, &is_idle); - - if (menu_driver_alive() && !is_idle) + if (menu_driver_alive() && !rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, NULL)) menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO, NULL); menu_driver_set_texture(); diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index 43ac77291e..0fd33126e9 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -444,16 +444,12 @@ static void rgui_render(void) if (!rgui->force_redraw) { - bool is_idle; - menu_display_ctl(MENU_DISPLAY_CTL_MSG_FORCE, &msg_force); if (menu_entries_needs_refresh() && menu_driver_alive() && !msg_force) return; - rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, &is_idle); - - if (is_idle) + if (rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, NULL)) return; if (!menu_display_ctl(MENU_DISPLAY_CTL_UPDATE_PENDING, NULL)) diff --git a/runloop.c b/runloop.c index a9e5220792..57938d2275 100644 --- a/runloop.c +++ b/runloop.c @@ -605,13 +605,7 @@ bool rarch_main_ctl(enum rarch_main_ctl_state state, void *data) } break; case RARCH_MAIN_CTL_IS_IDLE: - { - bool *ptr = (bool*)data; - if (!ptr) - return false; - *ptr = main_is_idle; - } - break; + return main_is_idle; case RARCH_MAIN_CTL_SET_IDLE: { bool *ptr = (bool*)data; @@ -930,14 +924,15 @@ int rarch_main_iterate(unsigned *sleep_ms) #ifdef HAVE_MENU if (menu_driver_alive()) { + bool focused = check_focus(settings) && !ui_companion_is_on_foreground(); + if (menu_driver_iterate((enum menu_action)menu_input_frame_retropad(input, trigger_input)) == -1) rarch_ctl(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED, NULL); - if (check_focus(settings) && !ui_companion_is_on_foreground()) - { + if (focused) menu_iterate_render(); - } - else + + if (!focused) { *sleep_ms = 10; return 1; diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 6aa1a9b4b0..e28158b3da 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -70,7 +70,6 @@ static void ui_companion_cocoatouch_event_command( static void rarch_draw_observer(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info) { - bool is_idle; unsigned sleep_ms = 0; int ret = rarch_main_iterate(&sleep_ms); @@ -85,9 +84,7 @@ static void rarch_draw_observer(CFRunLoopObserverRef observer, return; } - rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, &is_idle); - - if (is_idle) + if (rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, NULL)) return; CFRunLoopWakeUp(CFRunLoopGetMain()); }