summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatric Stout <truebrain@openttd.org>2021-05-12 16:31:31 +0200
committerGitHub <noreply@github.com>2021-05-12 16:31:31 +0200
commit56050fc96f59cef171d3b8a03ae3f3c9b83f9426 (patch)
treed4d45eef24878e2241fa6487e639ed54b9ca6303
parent3d9436bd75d2d6ff2024ac4ccacf8d6e1e730cc3 (diff)
downloadopenttd-56050fc96f59cef171d3b8a03ae3f3c9b83f9426.tar.xz
Fix 91b8ce07: dedicated servers could no longer create screenshots (#9232)
Although most commands are not useful on a dedicated server, screenshot commands should be dequeued.
-rw-r--r--src/video/dedicated_v.cpp1
-rw-r--r--src/video/video_driver.hpp34
2 files changed, 18 insertions, 17 deletions
diff --git a/src/video/dedicated_v.cpp b/src/video/dedicated_v.cpp
index e905a9d2c..a41278234 100644
--- a/src/video/dedicated_v.cpp
+++ b/src/video/dedicated_v.cpp
@@ -270,6 +270,7 @@ void VideoDriver_Dedicated::MainLoop()
while (!_exit_game) {
if (!_dedicated_forks) DedicatedHandleKeyInput();
+ this->DrainCommandQueue();
ChangeGameSpeed(_ddc_fastforward);
this->Tick();
diff --git a/src/video/video_driver.hpp b/src/video/video_driver.hpp
index db522a761..b87dc7052 100644
--- a/src/video/video_driver.hpp
+++ b/src/video/video_driver.hpp
@@ -319,23 +319,6 @@ protected:
return std::chrono::microseconds(1000000 / _settings_client.gui.refresh_rate);
}
- std::chrono::steady_clock::time_point next_game_tick;
- std::chrono::steady_clock::time_point next_draw_tick;
-
- bool fast_forward_key_pressed; ///< The fast-forward key is being pressed.
- bool fast_forward_via_key; ///< The fast-forward was enabled by key press.
-
- bool is_game_threaded;
- std::thread game_thread;
- std::mutex game_state_mutex;
- std::mutex game_thread_wait_mutex;
-
- static void GameThreadThunk(VideoDriver *drv);
-
-private:
- std::mutex cmd_queue_mutex;
- std::vector<std::function<void()>> cmd_queue;
-
/** Execute all queued commands. */
void DrainCommandQueue()
{
@@ -354,6 +337,23 @@ private:
}
}
+ std::chrono::steady_clock::time_point next_game_tick;
+ std::chrono::steady_clock::time_point next_draw_tick;
+
+ bool fast_forward_key_pressed; ///< The fast-forward key is being pressed.
+ bool fast_forward_via_key; ///< The fast-forward was enabled by key press.
+
+ bool is_game_threaded;
+ std::thread game_thread;
+ std::mutex game_state_mutex;
+ std::mutex game_thread_wait_mutex;
+
+ static void GameThreadThunk(VideoDriver *drv);
+
+private:
+ std::mutex cmd_queue_mutex;
+ std::vector<std::function<void()>> cmd_queue;
+
void GameLoop();
void GameThread();
};