mirror of
https://github.com/holub/mame
synced 2025-04-22 00:11:58 +03:00
Video throttling: Additive oversleeping
Signed-off-by: Celelibi <celelibi@gmail.com>
This commit is contained in:
parent
bafa5a7886
commit
35b13ffab2
@ -1045,7 +1045,11 @@ osd_ticks_t video_manager::throttle_until_ticks(osd_ticks_t target_ticks)
|
||||
while (current_ticks < target_ticks)
|
||||
{
|
||||
// compute how much time to sleep for, taking into account the average oversleep
|
||||
osd_ticks_t const delta = (target_ticks - current_ticks) * 1000 / (1000 + m_average_oversleep);
|
||||
osd_ticks_t delta = target_ticks - current_ticks;
|
||||
if (delta > m_average_oversleep / 1000)
|
||||
delta -= m_average_oversleep / 1000;
|
||||
else
|
||||
delta = 0;
|
||||
|
||||
// see if we can sleep
|
||||
bool const slept = allowed_to_sleep && delta;
|
||||
@ -1062,8 +1066,8 @@ osd_ticks_t video_manager::throttle_until_ticks(osd_ticks_t target_ticks)
|
||||
osd_ticks_t const actual_ticks = new_ticks - current_ticks;
|
||||
if (actual_ticks > delta)
|
||||
{
|
||||
// take 90% of the previous average plus 10% of the new value
|
||||
osd_ticks_t const oversleep_milliticks = 1000 * (actual_ticks - delta) / delta;
|
||||
// take 99% of the previous average plus 1% of the new value
|
||||
osd_ticks_t const oversleep_milliticks = 1000 * (actual_ticks - delta);
|
||||
m_average_oversleep = (m_average_oversleep * 99 + oversleep_milliticks) / 100;
|
||||
|
||||
if (LOG_THROTTLE)
|
||||
|
Loading…
Reference in New Issue
Block a user