|
@@ -116,21 +116,6 @@ void VideoDriver::Tick()
|
|
|
/* Avoid next_draw_tick getting behind more and more if it cannot keep up. */
|
|
|
if (this->next_draw_tick < now - ALLOWED_DRIFT * this->GetDrawInterval()) this->next_draw_tick = now;
|
|
|
|
|
|
/* Keep the interactive randomizer a bit more random by requesting
|
|
|
* new values when-ever we can. */
|
|
|
InteractiveRandom();
|
|
|
|
|
|
this->InputLoop();
|
|
|
|
|
|
/* Check if the fast-forward button is still pressed. */
|
|
|
if (fast_forward_key_pressed && !_networking && _game_mode != GM_MENU) {
|
|
|
ChangeGameSpeed(true);
|
|
|
this->fast_forward_via_key = true;
|
|
|
} else if (this->fast_forward_via_key) {
|
|
|
ChangeGameSpeed(false);
|
|
|
this->fast_forward_via_key = false;
|
|
|
}
|
|
|
|
|
|
/* Locking video buffer can block (especially with vsync enabled), do it before taking game state lock. */
|
|
|
this->LockVideoBuffer();
|
|
|
|
|
@@ -139,9 +124,24 @@ void VideoDriver::Tick()
|
|
|
std::lock_guard<std::mutex> lock_wait(this->game_thread_wait_mutex);
|
|
|
std::lock_guard<std::mutex> lock_state(this->game_state_mutex);
|
|
|
|
|
|
/* Keep the interactive randomizer a bit more random by requesting
|
|
|
* new values when-ever we can. */
|
|
|
InteractiveRandom();
|
|
|
|
|
|
this->DrainCommandQueue();
|
|
|
|
|
|
while (this->PollEvent()) {}
|
|
|
this->InputLoop();
|
|
|
|
|
|
/* Check if the fast-forward button is still pressed. */
|
|
|
if (fast_forward_key_pressed && !_networking && _game_mode != GM_MENU) {
|
|
|
ChangeGameSpeed(true);
|
|
|
this->fast_forward_via_key = true;
|
|
|
} else if (this->fast_forward_via_key) {
|
|
|
ChangeGameSpeed(false);
|
|
|
this->fast_forward_via_key = false;
|
|
|
}
|
|
|
|
|
|
::InputLoop();
|
|
|
|
|
|
/* Prevent drawing when switching mode, as windows can be removed when they should still appear. */
|