|
|
|
@ -778,11 +778,11 @@ void VideoDriver_SDL::LoopOnce()
|
|
|
|
|
|
|
|
|
|
if (cur_ticks >= next_game_tick || (_fast_forward && !_pause_mode)) {
|
|
|
|
|
if (_fast_forward && !_pause_mode) {
|
|
|
|
|
next_game_tick = cur_ticks + std::chrono::milliseconds(MILLISECONDS_PER_TICK);
|
|
|
|
|
next_game_tick = cur_ticks + this->GetGameInterval();
|
|
|
|
|
} else {
|
|
|
|
|
next_game_tick += std::chrono::milliseconds(MILLISECONDS_PER_TICK);
|
|
|
|
|
next_game_tick += this->GetGameInterval();
|
|
|
|
|
/* Avoid next_game_tick getting behind more and more if it cannot keep up. */
|
|
|
|
|
if (next_game_tick < cur_ticks - std::chrono::milliseconds(ALLOWED_DRIFT * MILLISECONDS_PER_TICK)) next_game_tick = cur_ticks;
|
|
|
|
|
if (next_game_tick < cur_ticks - ALLOWED_DRIFT * this->GetGameInterval()) next_game_tick = cur_ticks;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* The gameloop is the part that can run asynchronously. The rest
|
|
|
|
|