mirror of
https://github.com/libretro/RetroArch
synced 2025-02-07 03:40:24 +00:00
Refactor away rarch_limit_frame_time
This commit is contained in:
parent
a7893dca89
commit
f62abdfed8
86
runloop.c
86
runloop.c
@ -301,20 +301,6 @@ static void check_shader_dir(global_t *global,
|
|||||||
RARCH_WARN("%s\n", msg_hash_to_str(MSG_FAILED_TO_APPLY_SHADER));
|
RARCH_WARN("%s\n", msg_hash_to_str(MSG_FAILED_TO_APPLY_SHADER));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_MENU
|
|
||||||
static void do_state_check_menu_toggle(settings_t *settings, global_t *global)
|
|
||||||
{
|
|
||||||
if (menu_driver_alive())
|
|
||||||
{
|
|
||||||
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
|
|
||||||
rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
global_t *global_get_ptr(void)
|
global_t *global_get_ptr(void)
|
||||||
{
|
{
|
||||||
return &g_extern;
|
return &g_extern;
|
||||||
@ -630,30 +616,6 @@ 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, unsigned *sleep_ms)
|
|
||||||
{
|
|
||||||
retro_time_t current, target, to_sleep_ms;
|
|
||||||
|
|
||||||
if (!fastforward_ratio)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
current = retro_get_time_usec();
|
|
||||||
target = frame_limit_last_time + frame_limit_minimum_time;
|
|
||||||
to_sleep_ms = (target - current) / 1000;
|
|
||||||
|
|
||||||
if (to_sleep_ms > 0)
|
|
||||||
{
|
|
||||||
*sleep_ms = (unsigned)to_sleep_ms;
|
|
||||||
/* Combat jitter a bit. */
|
|
||||||
frame_limit_last_time += frame_limit_minimum_time;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
frame_limit_last_time = retro_get_time_usec();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* check_block_hotkey:
|
* check_block_hotkey:
|
||||||
* @enable_hotkey : Is hotkey enable key enabled?
|
* @enable_hotkey : Is hotkey enable key enabled?
|
||||||
@ -751,18 +713,6 @@ static INLINE retro_input_t input_keys_pressed(driver_t *driver,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* rarch_main_load_dummy_core:
|
|
||||||
*
|
|
||||||
* Quits out of RetroArch main loop.
|
|
||||||
*
|
|
||||||
* On special case, loads dummy core
|
|
||||||
* instead of exiting RetroArch completely.
|
|
||||||
* Aborts core shutdown if invoked.
|
|
||||||
*
|
|
||||||
* Returns: -1 if we are about to quit, otherwise 0.
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifdef HAVE_OVERLAY
|
#ifdef HAVE_OVERLAY
|
||||||
static void rarch_main_iterate_linefeed_overlay(driver_t *driver,
|
static void rarch_main_iterate_linefeed_overlay(driver_t *driver,
|
||||||
settings_t *settings)
|
settings_t *settings)
|
||||||
@ -774,14 +724,12 @@ static void rarch_main_iterate_linefeed_overlay(driver_t *driver,
|
|||||||
driver->osk_enable = false;
|
driver->osk_enable = false;
|
||||||
prev_overlay_restore = true;
|
prev_overlay_restore = true;
|
||||||
event_command(EVENT_CMD_OVERLAY_DEINIT);
|
event_command(EVENT_CMD_OVERLAY_DEINIT);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else if (!driver->osk_enable && driver->keyboard_linefeed_enable)
|
else if (!driver->osk_enable && driver->keyboard_linefeed_enable)
|
||||||
{
|
{
|
||||||
driver->osk_enable = true;
|
driver->osk_enable = true;
|
||||||
prev_overlay_restore = false;
|
prev_overlay_restore = false;
|
||||||
event_command(EVENT_CMD_OVERLAY_INIT);
|
event_command(EVENT_CMD_OVERLAY_INIT);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else if (prev_overlay_restore)
|
else if (prev_overlay_restore)
|
||||||
{
|
{
|
||||||
@ -801,7 +749,6 @@ void rarch_main_state_free(void)
|
|||||||
main_max_frames = 0;
|
main_max_frames = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void rarch_main_global_free(void)
|
void rarch_main_global_free(void)
|
||||||
{
|
{
|
||||||
event_command(EVENT_CMD_TEMPORARY_CONTENT_DEINIT);
|
event_command(EVENT_CMD_TEMPORARY_CONTENT_DEINIT);
|
||||||
@ -923,6 +870,7 @@ int rarch_main_iterate(unsigned *sleep_ms)
|
|||||||
unsigned i;
|
unsigned i;
|
||||||
retro_input_t trigger_input;
|
retro_input_t trigger_input;
|
||||||
event_cmd_state_t cmd;
|
event_cmd_state_t cmd;
|
||||||
|
retro_time_t current, target, to_sleep_ms;
|
||||||
static retro_input_t last_input = 0;
|
static retro_input_t last_input = 0;
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
@ -969,7 +917,15 @@ int rarch_main_iterate(unsigned *sleep_ms)
|
|||||||
|
|
||||||
#ifdef HAVE_MENU
|
#ifdef HAVE_MENU
|
||||||
if (cmd.menu_pressed || (global->inited.core.type == CORE_TYPE_DUMMY))
|
if (cmd.menu_pressed || (global->inited.core.type == CORE_TYPE_DUMMY))
|
||||||
do_state_check_menu_toggle(settings, global);
|
{
|
||||||
|
if (menu_driver_alive())
|
||||||
|
{
|
||||||
|
if (global->inited.main && (global->inited.core.type != CORE_TYPE_DUMMY))
|
||||||
|
rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_OVERLAY
|
#ifdef HAVE_OVERLAY
|
||||||
@ -1027,7 +983,7 @@ int rarch_main_iterate(unsigned *sleep_ms)
|
|||||||
|
|
||||||
if (!input && settings->menu.pause_libretro)
|
if (!input && settings->menu.pause_libretro)
|
||||||
return 1;
|
return 1;
|
||||||
return rarch_limit_frame_time(settings->fastforward_ratio, sleep_ms);
|
goto end;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1093,5 +1049,23 @@ int rarch_main_iterate(unsigned *sleep_ms)
|
|||||||
unlock_autosave();
|
unlock_autosave();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return rarch_limit_frame_time(settings->fastforward_ratio, sleep_ms);
|
end:
|
||||||
|
if (!settings->fastforward_ratio)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
current = retro_get_time_usec();
|
||||||
|
target = frame_limit_last_time + frame_limit_minimum_time;
|
||||||
|
to_sleep_ms = (target - current) / 1000;
|
||||||
|
|
||||||
|
if (to_sleep_ms > 0)
|
||||||
|
{
|
||||||
|
*sleep_ms = (unsigned)to_sleep_ms;
|
||||||
|
/* Combat jitter a bit. */
|
||||||
|
frame_limit_last_time += frame_limit_minimum_time;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
frame_limit_last_time = retro_get_time_usec();
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user