diff --git a/frontend/drivers/platform_emscripten.c b/frontend/drivers/platform_emscripten.c index b87addf509..e87b3d181c 100644 --- a/frontend/drivers/platform_emscripten.c +++ b/frontend/drivers/platform_emscripten.c @@ -69,7 +69,6 @@ static void emscripten_mainloop(void) { int ret; video_frame_info_t video_info; - unsigned sleep_ms = 0; RWebAudioRecalibrateTime(); @@ -99,10 +98,7 @@ static void emscripten_mainloop(void) command_event(CMD_EVENT_REINIT, NULL); } - ret = runloop_iterate(&sleep_ms); - - if (ret == 1 && sleep_ms > 0) - retro_sleep(sleep_ms); + ret = runloop_iterate(); task_queue_check(); diff --git a/frontend/drivers/platform_wiiu.c b/frontend/drivers/platform_wiiu.c index 0485a30956..4a7de74cf1 100644 --- a/frontend/drivers/platform_wiiu.c +++ b/frontend/drivers/platform_wiiu.c @@ -409,7 +409,6 @@ static void main_teardown(void) static void main_loop(void) { - unsigned sleep_ms = 0; OSTime start_time; int status; @@ -423,12 +422,9 @@ static void main_loop(void) else task_queue_wait(NULL, NULL); - status = runloop_iterate(&sleep_ms); + status = runloop_iterate(); - if(status == 1 && sleep_ms > 0) - usleep(sleep_ms); - - if(status == -1) + if (status == -1) break; } while(true); } diff --git a/retroarch.c b/retroarch.c index 4b570d23c5..cd4098c333 100644 --- a/retroarch.c +++ b/retroarch.c @@ -5202,14 +5202,10 @@ int rarch_main(int argc, char *argv[], void *data) { int ret; bool app_exit = false; - unsigned sleep_ms = 0; #ifdef HAVE_QT ui_companion_qt.application->process_events(); #endif - ret = runloop_iterate(&sleep_ms); - - if (ret == 1 && sleep_ms > 0) - retro_sleep(sleep_ms); + ret = runloop_iterate(); task_queue_check(); @@ -23040,8 +23036,7 @@ static enum runloop_state runloop_check_state( settings_t *settings, bool input_nonblock_state, bool runloop_is_paused, - float fastforward_ratio, - unsigned *sleep_ms) + float fastforward_ratio) { input_bits_t current_bits; #ifdef HAVE_MENU @@ -23860,7 +23855,7 @@ static enum runloop_state runloop_check_state( * button input in order to wake up the loop, * -1 if we forcibly quit out of the RetroArch iteration loop. **/ -int runloop_iterate(unsigned *sleep_ms) +int runloop_iterate(void) { unsigned i; bool runloop_is_paused = runloop_paused; @@ -23908,8 +23903,7 @@ int runloop_iterate(unsigned *sleep_ms) settings, input_nonblock_state, runloop_is_paused, - fastforward_ratio, - sleep_ms)) + fastforward_ratio)) { case RUNLOOP_STATE_QUIT: frame_limit_last_time = 0.0; @@ -23920,7 +23914,10 @@ int runloop_iterate(unsigned *sleep_ms) /* FIXME: This is an ugly way to tell Netplay this... */ netplay_driver_ctl(RARCH_NETPLAY_CTL_PAUSE, NULL); #endif - *sleep_ms = 10; +#if defined(HAVE_COCOATOUCH) + if (!main_ui_companion_is_on_foreground) +#endif + retro_sleep(10); return 1; case RUNLOOP_STATE_END: #ifdef HAVE_NETWORKING @@ -24087,9 +24084,14 @@ end: if (to_sleep_ms > 0) { - *sleep_ms = (unsigned)to_sleep_ms; + unsigned sleep_ms = (unsigned)to_sleep_ms; /* Combat jitter a bit. */ frame_limit_last_time += frame_limit_minimum_time; + if (sleep_ms > 0) +#if defined(HAVE_COCOATOUCH) + if (!main_ui_companion_is_on_foreground) +#endif + retro_sleep(sleep_ms); return 1; } } diff --git a/retroarch.h b/retroarch.h index 98a64de7ec..9fbcb8dbee 100644 --- a/retroarch.h +++ b/retroarch.h @@ -345,7 +345,7 @@ global_t *global_get_ptr(void); * Returns -1 if we forcibly quit out of the * RetroArch iteration loop. **/ -int runloop_iterate(unsigned *sleep_ms); +int runloop_iterate(void); void runloop_msg_queue_push(const char *msg, unsigned prio, unsigned duration, diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 8036348653..836f3b092d 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -413,7 +413,6 @@ static char** waiting_argv; do { int ret; - unsigned sleep_ms = 0; #ifdef HAVE_QT const ui_application_t *application = &ui_application_qt; #else @@ -422,10 +421,7 @@ static char** waiting_argv; if (application) application->process_events(); - ret = runloop_iterate(&sleep_ms); - - if (ret == 1 && sleep_ms > 0) - retro_sleep(sleep_ms); + ret = runloop_iterate(); task_queue_check(); diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 0d7da67532..3162972294 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -79,11 +79,8 @@ static void ui_companion_cocoatouch_event_command( static void rarch_draw_observer(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info) { - unsigned sleep_ms = 0; - int ret = runloop_iterate(&sleep_ms); + int ret = runloop_iterate(); - if (ret == 1 && !ui_companion_is_on_foreground() && sleep_ms > 0) - retro_sleep(sleep_ms); task_queue_check(); if (ret == -1) diff --git a/uwp/uwp_main.cpp b/uwp/uwp_main.cpp index 8a17931be9..d6e386a1af 100644 --- a/uwp/uwp_main.cpp +++ b/uwp/uwp_main.cpp @@ -314,11 +314,7 @@ void App::Run() { CoreWindow::GetForCurrentThread()->Dispatcher->ProcessEvents(CoreProcessEventsOption::ProcessAllIfPresent); - unsigned sleep_ms = 0; - int ret = runloop_iterate(&sleep_ms); - - if (ret == 1 && sleep_ms > 0) - retro_sleep(sleep_ms); + int ret = runloop_iterate(); task_queue_check();