mirror of
https://github.com/libretro/RetroArch
synced 2025-03-03 04:14:00 +00:00
more accurate rarch_timer
This commit is contained in:
parent
8a2b23de34
commit
70eda90d03
@ -125,14 +125,14 @@ void rarch_timer_tick(rarch_timer_t *timer)
|
||||
if (!timer)
|
||||
return;
|
||||
timer->current = cpu_features_get_time_usec();
|
||||
timer->timeout = (timer->timeout_end - timer->current) / 1000000;
|
||||
timer->timeout_us = (timer->timeout_end - timer->current);
|
||||
}
|
||||
|
||||
int rarch_timer_get_timeout(rarch_timer_t *timer)
|
||||
{
|
||||
if (!timer)
|
||||
return 0;
|
||||
return (int)timer->timeout;
|
||||
return (int)timer->timeout_us / 1000000;
|
||||
}
|
||||
|
||||
bool rarch_timer_is_running(rarch_timer_t *timer)
|
||||
@ -144,7 +144,7 @@ bool rarch_timer_is_running(rarch_timer_t *timer)
|
||||
|
||||
bool rarch_timer_has_expired(rarch_timer_t *timer)
|
||||
{
|
||||
if (!timer || timer->timeout <= 0)
|
||||
if (!timer || timer->timeout_us <= 0)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@ -162,7 +162,18 @@ void rarch_timer_begin_new_time(rarch_timer_t *timer, uint64_t sec)
|
||||
{
|
||||
if (!timer)
|
||||
return;
|
||||
timer->timeout_end = cpu_features_get_time_usec() + sec * 1000000;
|
||||
timer->timeout_us = sec * 1000000;
|
||||
timer->current = cpu_features_get_time_usec();
|
||||
timer->timeout_end = timer->current + timer->timeout_us;
|
||||
}
|
||||
|
||||
void rarch_timer_begin_new_time_us(rarch_timer_t *timer, uint64_t usec)
|
||||
{
|
||||
if (!timer)
|
||||
return;
|
||||
timer->timeout_us = usec;
|
||||
timer->current = cpu_features_get_time_usec();
|
||||
timer->timeout_end = timer->current + timer->timeout_us;
|
||||
}
|
||||
|
||||
void rarch_timer_begin(rarch_timer_t *timer, uint64_t sec)
|
||||
|
@ -33,7 +33,7 @@ RETRO_BEGIN_DECLS
|
||||
typedef struct rarch_timer
|
||||
{
|
||||
int64_t current;
|
||||
int64_t timeout;
|
||||
int64_t timeout_us;
|
||||
int64_t timeout_end;
|
||||
bool timer_begin;
|
||||
bool timer_end;
|
||||
@ -99,6 +99,8 @@ void rarch_timer_begin(rarch_timer_t *timer, uint64_t ms);
|
||||
|
||||
void rarch_timer_begin_new_time(rarch_timer_t *timer, uint64_t sec);
|
||||
|
||||
void rarch_timer_begin_new_time_us(rarch_timer_t *timer, uint64_t usec);
|
||||
|
||||
void rarch_timer_end(rarch_timer_t *timer);
|
||||
|
||||
int rarch_timer_get_timeout(rarch_timer_t *timer);
|
||||
|
@ -3209,7 +3209,7 @@ static enum runloop_state runloop_check_state(
|
||||
{
|
||||
/* rarch_timer_tick */
|
||||
timer.current = cpu_features_get_time_usec();
|
||||
timer.timeout = (timer.timeout_end - timer.current) / 1000;
|
||||
timer.timeout_us = (timer.timeout_end - timer.current);
|
||||
|
||||
if (!timer.timer_end && rarch_timer_has_expired(&timer))
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user