diff options
author | Patric Stout <truebrain@openttd.org> | 2021-06-17 18:58:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-17 18:58:59 +0200 |
commit | c12a152ec972309a87ab1637091990520ce9c123 (patch) | |
tree | 836d3b619339409450596a4ecf8a6ea3bb77a88d | |
parent | 281a65b3e17310d07458652a3f6cba55aff59dc0 (diff) | |
download | openttd-c12a152ec972309a87ab1637091990520ce9c123.tar.xz |
Fix: thread safety issue during exiting the game (#9380)
_exit_game is read by the draw-thread to know when to exit, but
most of the time written by the game-thread.
-rw-r--r-- | src/gfx.cpp | 2 | ||||
-rw-r--r-- | src/openttd.h | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/src/gfx.cpp b/src/gfx.cpp index d787dc26f..ff2c80bfc 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -41,7 +41,7 @@ bool _right_button_down; ///< Is right mouse button pressed? bool _right_button_clicked; ///< Is right mouse button clicked? DrawPixelInfo _screen; bool _screen_disable_anim = false; ///< Disable palette animation (important for 32bpp-anim blitter during giant screenshot) -bool _exit_game; +std::atomic<bool> _exit_game; GameMode _game_mode; SwitchMode _switch_mode; ///< The next mainloop command. PauseMode _pause_mode; diff --git a/src/openttd.h b/src/openttd.h index 2cd9cc1f0..6473168ee 100644 --- a/src/openttd.h +++ b/src/openttd.h @@ -10,6 +10,7 @@ #ifndef OPENTTD_H #define OPENTTD_H +#include <atomic> #include "core/enum_type.hpp" /** Mode which defines the state of the game. */ @@ -52,7 +53,7 @@ enum DisplayOptions { extern GameMode _game_mode; extern SwitchMode _switch_mode; -extern bool _exit_game; +extern std::atomic<bool> _exit_game; extern bool _save_config; /** Modes of pausing we've got */ |