diff options
author | Patric Stout <truebrain@openttd.org> | 2021-02-18 13:33:27 +0100 |
---|---|---|
committer | Patric Stout <github@truebrain.nl> | 2021-02-19 10:43:15 +0100 |
commit | c4df0f95ae106f3e41c8c1fb5c19670ce876f1f4 (patch) | |
tree | 84ca8c35b7378ae4efee4b069736902beb746c83 /src/video/cocoa | |
parent | fa170b9ace1a2f45833627676b0106ee13914bd4 (diff) | |
download | openttd-c4df0f95ae106f3e41c8c1fb5c19670ce876f1f4.tar.xz |
Fix: during switching of game-mode, drawing could show closed windows that shouldn't be closed yet
The higher your refresh-rate, the more likely this is. Mostly you
notice this when creating a new game or when abandoning a game.
This is a bit of a hack to keep the old behaviour, as before this
patch the game was already freezing your mouse while it was changing
game-mode, and it does this too after this patch. Just now it
freezes too a few frames earlier, to prevent not drawing windows
people still expect to see.
Diffstat (limited to 'src/video/cocoa')
-rw-r--r-- | src/video/cocoa/cocoa_v.mm | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm index 31bad36dc..cf2512b04 100644 --- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -36,6 +36,7 @@ #include "../../gfx_func.h" #include "../../thread.h" #include "../../core/random_func.hpp" +#include "../../progress.h" #include "../../settings_type.h" #include "../../window_func.h" #include "../../window_gui.h" @@ -685,7 +686,8 @@ void VideoDriver_Cocoa::GameLoop() ::GameLoop(); } - if (cur_ticks >= next_draw_tick) { + /* Prevent drawing when switching mode, as windows can be removed when they should still appear. */ + if (cur_ticks >= next_draw_tick && (_switch_mode == SM_NONE || HasModalProgress())) { next_draw_tick += this->GetDrawInterval(); /* Avoid next_draw_tick getting behind more and more if it cannot keep up. */ if (next_draw_tick < cur_ticks - ALLOWED_DRIFT * this->GetDrawInterval()) next_draw_tick = cur_ticks; |