Codechange: Acquire video buffer before taking game state lock to prevent erratic fast forward behaviour (#9140)

This commit is contained in:
Milek7 2021-05-02 20:10:07 +02:00 committed by GitHub
parent 756034fa27
commit 20762f9117
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 2 deletions

View File

@ -131,13 +131,14 @@ void VideoDriver::Tick()
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. */
std::lock_guard<std::mutex> lock_wait(this->game_thread_wait_mutex);
std::lock_guard<std::mutex> lock_state(this->game_state_mutex);
this->LockVideoBuffer();
this->DrainCommandQueue();
while (this->PollEvent()) {}