diff options
Diffstat (limited to 'src/gfx.cpp')
-rw-r--r-- | src/gfx.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/gfx.cpp b/src/gfx.cpp index 55721e052..5a5c45972 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -1732,10 +1732,11 @@ void DrawDirtyBlocks() _modal_progress_paint_mutex->BeginCritical(); _modal_progress_work_mutex->BeginCritical(); - if (_switch_mode != SM_NONE && !HasModalProgress()) { - SwitchToMode(_switch_mode); - _switch_mode = SM_NONE; - } + /* When we ended with the modal progress, do not draw the blocks. + * Simply let the next run do so, otherwise we would be loading + * the new state (and possibly change the blitter) when we hold + * the drawing lock, which we must not do. */ + if (_switch_mode != SM_NONE && !HasModalProgress()) return; } y = 0; |