Pass sleep_ms argument to rarch_main_iterate

This commit is contained in:
twinaphex 2015-08-27 14:52:02 +02:00
parent 1ec90df165
commit fdd1d3ee9f
7 changed files with 31 additions and 24 deletions

View File

@ -248,10 +248,11 @@ static void android_app_entry(void *data)
#ifndef HAVE_MAIN #ifndef HAVE_MAIN
do do
{ {
ret = rarch_main_iterate(); unsigned sleep_ms = 0;
ret = rarch_main_iterate(&sleep_ms);
if (ret == 1) if (ret == 1 && sleep_ms > 0)
rarch_sleep(10); rarch_sleep(sleep_ms);
rarch_main_data_iterate(); rarch_main_data_iterate();
}while (ret != -1); }while (ret != -1);

View File

@ -27,9 +27,10 @@
static void emscripten_mainloop(void) static void emscripten_mainloop(void)
{ {
int ret = rarch_main_iterate(); unsigned sleep_ms = 0;
if (ret == 1) int ret = rarch_main_iterate(&sleep_ms);
rarch_sleep(10); if (ret == 1 && sleep_ms > 0)
rarch_sleep(sleep_ms);
rarch_main_data_iterate(); rarch_main_data_iterate();
if (ret != -1) if (ret != -1)
return; return;

View File

@ -342,10 +342,11 @@ int rarch_main(int argc, char *argv[], void *data)
#ifndef HAVE_MAIN #ifndef HAVE_MAIN
do{ do{
ret = rarch_main_iterate(); unsigned sleep_ms = 0;
ret = rarch_main_iterate(&sleep_ms);
if (ret == 1) if (ret == 1 && sleep_ms > 0)
rarch_sleep(10); rarch_sleep(sleep_ms);
rarch_main_data_iterate(); rarch_main_data_iterate();
}while(ret != -1); }while(ret != -1);

View File

@ -653,7 +653,7 @@ static void rarch_update_frame_time(driver_t *driver, float slowmotion_ratio,
system->frame_time.callback(delta); system->frame_time.callback(delta);
} }
static int rarch_limit_frame_time(float fastforward_ratio) static int rarch_limit_frame_time(float fastforward_ratio, unsigned *sleep_ms)
{ {
retro_time_t current, target, to_sleep_ms; retro_time_t current, target, to_sleep_ms;
@ -666,9 +666,10 @@ static int rarch_limit_frame_time(float fastforward_ratio)
if (to_sleep_ms > 0) if (to_sleep_ms > 0)
{ {
rarch_sleep((unsigned int)to_sleep_ms); *sleep_ms = (unsigned)to_sleep_ms;
/* Combat jitter a bit. */ /* Combat jitter a bit. */
frame_limit_last_time += frame_limit_minimum_time; frame_limit_last_time += frame_limit_minimum_time;
return 1;
} }
else else
frame_limit_last_time = rarch_get_time_usec(); frame_limit_last_time = rarch_get_time_usec();
@ -1001,7 +1002,7 @@ static void rarch_main_cmd_get_state(driver_t *driver,
* Returns: 0 on success, 1 if we have to wait until button input in order * 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. * to wake up the loop, -1 if we forcibly quit out of the RetroArch iteration loop.
**/ **/
int rarch_main_iterate(void) int rarch_main_iterate(unsigned *sleep_ms)
{ {
unsigned i; unsigned i;
retro_input_t trigger_input; retro_input_t trigger_input;
@ -1086,7 +1087,7 @@ int rarch_main_iterate(void)
if (!input && settings->menu.pause_libretro) if (!input && settings->menu.pause_libretro)
return 1; return 1;
return rarch_limit_frame_time(settings->fastforward_ratio); return rarch_limit_frame_time(settings->fastforward_ratio, sleep_ms);
} }
#endif #endif
@ -1094,6 +1095,7 @@ int rarch_main_iterate(void)
{ {
/* RetroArch has been paused. */ /* RetroArch has been paused. */
driver->retro_ctx.poll_cb(); driver->retro_ctx.poll_cb();
*sleep_ms = 10;
return 1; return 1;
} }
@ -1152,5 +1154,5 @@ int rarch_main_iterate(void)
unlock_autosave(); unlock_autosave();
#endif #endif
return rarch_limit_frame_time(settings->fastforward_ratio); return rarch_limit_frame_time(settings->fastforward_ratio, sleep_ms);
} }

View File

@ -308,7 +308,7 @@ global_t *global_get_ptr(void);
* Returns: 0 on successful run, 1 if we have to wait until button input in order * 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. * to wake up the loop, -1 if we forcibly quit out of the RetroArch iteration loop.
**/ **/
int rarch_main_iterate(void); int rarch_main_iterate(unsigned *sleep_ms);
void rarch_main_msg_queue_push(const char *msg, unsigned prio, void rarch_main_msg_queue_push(const char *msg, unsigned prio,
unsigned duration, bool flush); unsigned duration, bool flush);

View File

@ -208,12 +208,13 @@ static void poll_iteration(void)
int ret = 0; int ret = 0;
while (ret != -1) while (ret != -1)
{ {
poll_iteration(); unsigned sleep_ms = 0;
ret = rarch_main_iterate(); poll_iteration();
if (ret == 1) ret = rarch_main_iterate(&sleep_ms);
rarch_sleep(10); if (ret == 1 && sleep_ms > 0)
rarch_main_data_iterate(); rarch_sleep(sleep_ms);
while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002, FALSE) == kCFRunLoopRunHandledSource); rarch_main_data_iterate();
while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002, FALSE) == kCFRunLoopRunHandledSource);
} }
main_exit(NULL); main_exit(NULL);

View File

@ -60,10 +60,11 @@ static void rarch_disable_ui(void)
static void rarch_draw_observer(CFRunLoopObserverRef observer, static void rarch_draw_observer(CFRunLoopObserverRef observer,
CFRunLoopActivity activity, void *info) CFRunLoopActivity activity, void *info)
{ {
int ret = rarch_main_iterate(); unsigned sleep_ms = 0;
int ret = rarch_main_iterate(&sleep_ms);
if (ret == 1 && !ui_companion_is_on_foreground()) if (ret == 1 && !ui_companion_is_on_foreground() && sleep_ms > 0)
rarch_sleep(10); rarch_sleep(sleep_ms);
rarch_main_data_iterate(); rarch_main_data_iterate();
if (ret == -1) if (ret == -1)