mirror of https://github.com/OpenTTD/OpenTTD
Codechange: Acquire video buffer before taking game state lock to prevent erratic fast forward behaviour (#9140)
parent
72090f39ce
commit
8b5bd34a65
|
@ -131,13 +131,14 @@ void VideoDriver::Tick()
|
||||||
this->fast_forward_via_key = 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();
|
||||||
|
|
||||||
{
|
{
|
||||||
/* Tell the game-thread to stop so we can have a go. */
|
/* Tell the game-thread to stop so we can have a go. */
|
||||||
std::lock_guard<std::mutex> lock_wait(this->game_thread_wait_mutex);
|
std::lock_guard<std::mutex> lock_wait(this->game_thread_wait_mutex);
|
||||||
std::lock_guard<std::mutex> lock_state(this->game_state_mutex);
|
std::lock_guard<std::mutex> lock_state(this->game_state_mutex);
|
||||||
|
|
||||||
this->LockVideoBuffer();
|
|
||||||
|
|
||||||
this->DrainCommandQueue();
|
this->DrainCommandQueue();
|
||||||
|
|
||||||
while (this->PollEvent()) {}
|
while (this->PollEvent()) {}
|
||||||
|
|
Loading…
Reference in New Issue