Start calling cpu_features_get_time_usec less per frame iteration
This commit is contained in:
parent
795801b1f5
commit
d19dd12b30
|
@ -1215,6 +1215,7 @@ void gfx_animation_unset_update_time_cb(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gfx_animation_update_time(
|
static void gfx_animation_update_time(
|
||||||
|
retro_time_t current_time,
|
||||||
bool timedate_enable,
|
bool timedate_enable,
|
||||||
unsigned video_width, unsigned video_height,
|
unsigned video_width, unsigned video_height,
|
||||||
float _ticker_speed)
|
float _ticker_speed)
|
||||||
|
@ -1235,8 +1236,9 @@ static void gfx_animation_update_time(
|
||||||
unsigned ticker_slow_speed =
|
unsigned ticker_slow_speed =
|
||||||
(unsigned)(((float)TICKER_SLOW_SPEED / speed_factor) + 0.5);
|
(unsigned)(((float)TICKER_SLOW_SPEED / speed_factor) + 0.5);
|
||||||
|
|
||||||
/* Note: cur_time & old_time are in us, delta_time is in ms */
|
/* Note: cur_time & old_time are in us (microseconds),
|
||||||
cur_time = cpu_features_get_time_usec();
|
* delta_time is in ms */
|
||||||
|
cur_time = current_time;
|
||||||
delta_time = old_time == 0 ? 0.0f : (float)(cur_time - old_time) / 1000.0f;
|
delta_time = old_time == 0 ? 0.0f : (float)(cur_time - old_time) / 1000.0f;
|
||||||
old_time = cur_time;
|
old_time = cur_time;
|
||||||
|
|
||||||
|
@ -1307,6 +1309,7 @@ static void gfx_animation_update_time(
|
||||||
}
|
}
|
||||||
|
|
||||||
bool gfx_animation_update(
|
bool gfx_animation_update(
|
||||||
|
retro_time_t current_time,
|
||||||
bool timedate_enable,
|
bool timedate_enable,
|
||||||
float ticker_speed,
|
float ticker_speed,
|
||||||
unsigned video_width,
|
unsigned video_width,
|
||||||
|
@ -1315,6 +1318,7 @@ bool gfx_animation_update(
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
gfx_animation_update_time(
|
gfx_animation_update_time(
|
||||||
|
current_time,
|
||||||
timedate_enable,
|
timedate_enable,
|
||||||
video_width, video_height,
|
video_width, video_height,
|
||||||
ticker_speed);
|
ticker_speed);
|
||||||
|
|
|
@ -201,6 +201,7 @@ void gfx_timer_start(gfx_timer_t *timer, gfx_timer_ctx_entry_t *timer_entry);
|
||||||
void gfx_timer_kill(gfx_timer_t *timer);
|
void gfx_timer_kill(gfx_timer_t *timer);
|
||||||
|
|
||||||
bool gfx_animation_update(
|
bool gfx_animation_update(
|
||||||
|
retro_time_t current_time,
|
||||||
bool timedate_enable,
|
bool timedate_enable,
|
||||||
float ticker_speed,
|
float ticker_speed,
|
||||||
unsigned video_width,
|
unsigned video_width,
|
||||||
|
|
20
retroarch.c
20
retroarch.c
|
@ -27205,7 +27205,7 @@ static void update_fastforwarding_state(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum runloop_state runloop_check_state(void)
|
static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||||
{
|
{
|
||||||
input_bits_t current_bits;
|
input_bits_t current_bits;
|
||||||
#ifdef HAVE_MENU
|
#ifdef HAVE_MENU
|
||||||
|
@ -27364,7 +27364,7 @@ static enum runloop_state runloop_check_state(void)
|
||||||
if (trig_quit_key && settings->bools.quit_press_twice)
|
if (trig_quit_key && settings->bools.quit_press_twice)
|
||||||
{
|
{
|
||||||
static retro_time_t quit_key_time = 0;
|
static retro_time_t quit_key_time = 0;
|
||||||
retro_time_t cur_time = cpu_features_get_time_usec();
|
retro_time_t cur_time = current_time;
|
||||||
trig_quit_key = (cur_time - quit_key_time < QUIT_DELAY_USEC);
|
trig_quit_key = (cur_time - quit_key_time < QUIT_DELAY_USEC);
|
||||||
quit_key_time = cur_time;
|
quit_key_time = cur_time;
|
||||||
|
|
||||||
|
@ -27450,6 +27450,7 @@ static enum runloop_state runloop_check_state(void)
|
||||||
|
|
||||||
#if defined(HAVE_MENU) || defined(HAVE_GFX_WIDGETS)
|
#if defined(HAVE_MENU) || defined(HAVE_GFX_WIDGETS)
|
||||||
gfx_animation_update(
|
gfx_animation_update(
|
||||||
|
current_time,
|
||||||
settings->bools.menu_timedate_enable,
|
settings->bools.menu_timedate_enable,
|
||||||
settings->floats.menu_ticker_speed,
|
settings->floats.menu_ticker_speed,
|
||||||
video_driver_width, video_driver_height);
|
video_driver_width, video_driver_height);
|
||||||
|
@ -27494,7 +27495,7 @@ static enum runloop_state runloop_check_state(void)
|
||||||
{
|
{
|
||||||
if (action == old_action)
|
if (action == old_action)
|
||||||
{
|
{
|
||||||
retro_time_t press_time = cpu_features_get_time_usec();
|
retro_time_t press_time = current_time;
|
||||||
|
|
||||||
if (action == MENU_ACTION_NOOP)
|
if (action == MENU_ACTION_NOOP)
|
||||||
global->menu.noop_press_time = press_time - global->menu.noop_start_time;
|
global->menu.noop_press_time = press_time - global->menu.noop_start_time;
|
||||||
|
@ -27505,13 +27506,13 @@ static enum runloop_state runloop_check_state(void)
|
||||||
{
|
{
|
||||||
if (action == MENU_ACTION_NOOP)
|
if (action == MENU_ACTION_NOOP)
|
||||||
{
|
{
|
||||||
global->menu.noop_start_time = cpu_features_get_time_usec();
|
global->menu.noop_start_time = current_time;
|
||||||
global->menu.noop_press_time = 0;
|
global->menu.noop_press_time = 0;
|
||||||
|
|
||||||
if (global->menu.prev_action == old_action)
|
if (global->menu.prev_action == old_action)
|
||||||
global->menu.action_start_time = global->menu.prev_start_time;
|
global->menu.action_start_time = global->menu.prev_start_time;
|
||||||
else
|
else
|
||||||
global->menu.action_start_time = cpu_features_get_time_usec();
|
global->menu.action_start_time = current_time;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -27519,11 +27520,11 @@ static enum runloop_state runloop_check_state(void)
|
||||||
global->menu.noop_press_time < 200000) /* 250ms */
|
global->menu.noop_press_time < 200000) /* 250ms */
|
||||||
{
|
{
|
||||||
global->menu.action_start_time = global->menu.prev_start_time;
|
global->menu.action_start_time = global->menu.prev_start_time;
|
||||||
global->menu.action_press_time = cpu_features_get_time_usec() - global->menu.action_start_time;
|
global->menu.action_press_time = current_time - global->menu.action_start_time;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
global->menu.prev_start_time = cpu_features_get_time_usec();
|
global->menu.prev_start_time = current_time;
|
||||||
global->menu.prev_action = action;
|
global->menu.prev_action = action;
|
||||||
global->menu.action_press_time = 0;
|
global->menu.action_press_time = 0;
|
||||||
}
|
}
|
||||||
|
@ -28012,6 +28013,7 @@ int runloop_iterate(void)
|
||||||
unsigned video_frame_delay = settings->uints.video_frame_delay;
|
unsigned video_frame_delay = settings->uints.video_frame_delay;
|
||||||
bool vrr_runloop_enable = settings->bools.vrr_runloop_enable;
|
bool vrr_runloop_enable = settings->bools.vrr_runloop_enable;
|
||||||
unsigned max_users = input_driver_max_users;
|
unsigned max_users = input_driver_max_users;
|
||||||
|
retro_time_t current_time = cpu_features_get_time_usec();
|
||||||
|
|
||||||
#ifdef HAVE_DISCORD
|
#ifdef HAVE_DISCORD
|
||||||
if (discord_is_inited)
|
if (discord_is_inited)
|
||||||
|
@ -28023,7 +28025,7 @@ int runloop_iterate(void)
|
||||||
/* Updates frame timing if frame timing callback is in use by the core.
|
/* Updates frame timing if frame timing callback is in use by the core.
|
||||||
* Limits frame time if fast forward ratio throttle is enabled. */
|
* Limits frame time if fast forward ratio throttle is enabled. */
|
||||||
retro_usec_t runloop_last_frame_time = runloop_frame_time_last;
|
retro_usec_t runloop_last_frame_time = runloop_frame_time_last;
|
||||||
retro_time_t current = cpu_features_get_time_usec();
|
retro_time_t current = current_time;
|
||||||
bool is_locked_fps = (runloop_paused || input_driver_nonblock_state)
|
bool is_locked_fps = (runloop_paused || input_driver_nonblock_state)
|
||||||
| !!recording_data;
|
| !!recording_data;
|
||||||
retro_time_t delta = (!runloop_last_frame_time || is_locked_fps) ?
|
retro_time_t delta = (!runloop_last_frame_time || is_locked_fps) ?
|
||||||
|
@ -28045,7 +28047,7 @@ int runloop_iterate(void)
|
||||||
runloop_frame_time.callback(delta);
|
runloop_frame_time.callback(delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch ((enum runloop_state)runloop_check_state())
|
switch ((enum runloop_state)runloop_check_state(current_time))
|
||||||
{
|
{
|
||||||
case RUNLOOP_STATE_QUIT:
|
case RUNLOOP_STATE_QUIT:
|
||||||
frame_limit_last_time = 0.0;
|
frame_limit_last_time = 0.0;
|
||||||
|
|
Loading…
Reference in New Issue