From ce7ec0681b8927ae404613bddacfae26e1680e3c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 28 Nov 2015 03:03:26 +0100 Subject: [PATCH] Don't render menu if unfocused - reimplement this --- frontend/drivers/platform_linux.c | 9 +++++---- frontend/frontend.c | 7 ++++--- menu/cbs/menu_cbs_select.c | 2 +- runloop.c | 5 +++-- runloop.h | 2 +- runloop_data.c | 4 ++-- runloop_data.h | 2 +- ui/drivers/ui_cocoa.m | 11 ++++++----- ui/drivers/ui_cocoatouch.m | 5 +++-- 9 files changed, 26 insertions(+), 21 deletions(-) diff --git a/frontend/drivers/platform_linux.c b/frontend/drivers/platform_linux.c index ea4e0ba99f..47efb91c53 100644 --- a/frontend/drivers/platform_linux.c +++ b/frontend/drivers/platform_linux.c @@ -733,16 +733,17 @@ static void android_app_entry(void *data) #ifndef HAVE_MAIN do { - bool sleeping = false; - unsigned sleep_ms = 0; - ret = rarch_main_iterate(&sleep_ms); + bool sleeping = false; + unsigned unfocused = 0; + unsigned sleep_ms = 0; + ret = rarch_main_iterate(&unfocused, &sleep_ms); if (ret == 1 && sleep_ms > 0) { sleeping = true; retro_sleep(sleep_ms); } - rarch_main_data_iterate(sleeping); + rarch_main_data_iterate(unfocused, sleeping); }while (ret != -1); main_exit(data); diff --git a/frontend/frontend.c b/frontend/frontend.c index 4d83c9a52d..c60b9de712 100644 --- a/frontend/frontend.c +++ b/frontend/frontend.c @@ -325,15 +325,16 @@ int rarch_main(int argc, char *argv[], void *data) do { bool sleeping = false; - unsigned sleep_ms = 0; - ret = rarch_main_iterate(&sleep_ms); + unsigned unfocused = 0; + unsigned sleep_ms = 0; + ret = rarch_main_iterate(&unfocused, &sleep_ms); if (ret == 1 && sleep_ms > 0) { sleeping = true; retro_sleep(sleep_ms); } - rarch_main_data_iterate(sleeping); + rarch_main_data_iterate(unfocused, sleeping); }while(ret != -1); main_exit(args); diff --git a/menu/cbs/menu_cbs_select.c b/menu/cbs/menu_cbs_select.c index d997ec5905..583239a787 100644 --- a/menu/cbs/menu_cbs_select.c +++ b/menu/cbs/menu_cbs_select.c @@ -78,7 +78,7 @@ static int action_select_default(const char *path, const char *label, unsigned t if (action != MENU_ACTION_NOOP) ret = menu_entry_action(&entry, idx, action); - rarch_main_data_iterate(false); + rarch_main_data_iterate(false, false); return ret; } diff --git a/runloop.c b/runloop.c index 9404adb7f8..f1659dfce9 100644 --- a/runloop.c +++ b/runloop.c @@ -828,7 +828,7 @@ static INLINE int rarch_main_iterate_time_to_exit(event_cmd_state_t *cmd) * Returns: 0 on success, 1 if we have to wait until button input in order * to wake up the loop, -1 if we forcibly quit out of the RetroArch iteration loop. **/ -int rarch_main_iterate(unsigned *sleep_ms) +int rarch_main_iterate(unsigned *unfocused, unsigned *sleep_ms) { int ret; unsigned i; @@ -933,7 +933,8 @@ int rarch_main_iterate(unsigned *sleep_ms) if (!rarch_main_ctl(RARCH_MAIN_CTL_CHECK_IDLE_STATE, &cmd)) { - *sleep_ms = 10; + *unfocused = 1; + *sleep_ms = 10; return 1; } diff --git a/runloop.h b/runloop.h index 4c8ddcf242..df61ac5db7 100644 --- a/runloop.h +++ b/runloop.h @@ -339,7 +339,7 @@ global_t *global_get_ptr(void); * Returns: 0 on successful run, 1 if we have to wait until button input in order * to wake up the loop, -1 if we forcibly quit out of the RetroArch iteration loop. **/ -int rarch_main_iterate(unsigned *sleep_ms); +int rarch_main_iterate(unsigned *unfocused, unsigned *sleep_ms); void rarch_main_msg_queue_push(const char *msg, unsigned prio, unsigned duration, bool flush); diff --git a/runloop_data.c b/runloop_data.c index 41603fc36c..37bac47598 100644 --- a/runloop_data.c +++ b/runloop_data.c @@ -31,10 +31,10 @@ void rarch_main_data_deinit(void) rarch_task_deinit(); } -void rarch_main_data_iterate(bool sleeping) +void rarch_main_data_iterate(bool unfocused, bool sleeping) { #ifdef HAVE_MENU - if (!sleeping) + if (unfocused) menu_iterate_render(); #endif diff --git a/runloop_data.h b/runloop_data.h index 86346ec242..39d7658964 100644 --- a/runloop_data.h +++ b/runloop_data.h @@ -27,7 +27,7 @@ typedef int (*transfer_cb_t)(void *data, size_t len); void rarch_main_data_clear_state(void); -void rarch_main_data_iterate(bool sleeping); +void rarch_main_data_iterate(bool unfocused, bool sleeping); void rarch_main_data_deinit(void); diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index a84d99f25e..bbc8f49576 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -226,16 +226,17 @@ static void poll_iteration(void) int ret = 0; while (ret != -1) { - bool sleeping = false; - unsigned sleep_ms = 0; + bool sleeping = false; + unsigned unfocused = 0; + unsigned sleep_ms = 0; poll_iteration(); - ret = rarch_main_iterate(&sleep_ms); + ret = rarch_main_iterate(&unfocused, &sleep_ms); if (ret == 1 && sleep_ms > 0) { - sleeping = true; + sleeping = true; retro_sleep(sleep_ms); } - rarch_main_data_iterate(sleeping); + rarch_main_data_iterate(unfocused, sleeping); while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002, FALSE) == kCFRunLoopRunHandledSource); } diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index c16afc9ebc..9e68c3bf3f 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -72,15 +72,16 @@ static void rarch_draw_observer(CFRunLoopObserverRef observer, { bool is_idle; bool sleeping = false; + unsigned unfocused = 0; unsigned sleep_ms = 0; - int ret = rarch_main_iterate(&sleep_ms); + int ret = rarch_main_iterate(&unfocused, &sleep_ms); if (ret == 1 && !ui_companion_is_on_foreground() && sleep_ms > 0) { sleeping = true; retro_sleep(sleep_ms); } - rarch_main_data_iterate(sleeping); + rarch_main_data_iterate(unfocused, sleeping); if (ret == -1) {