diff options
author | Patric Stout <truebrain@openttd.org> | 2021-05-12 16:31:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-12 16:31:31 +0200 |
commit | 56050fc96f59cef171d3b8a03ae3f3c9b83f9426 (patch) | |
tree | d4d45eef24878e2241fa6487e639ed54b9ca6303 /src/video | |
parent | 3d9436bd75d2d6ff2024ac4ccacf8d6e1e730cc3 (diff) | |
download | openttd-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.
Diffstat (limited to 'src/video')
-rw-r--r-- | src/video/dedicated_v.cpp | 1 | ||||
-rw-r--r-- | src/video/video_driver.hpp | 34 |
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(); }; |