diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-08-22 15:19:16 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-08-22 15:19:16 +0100 |
commit | 471c0fa3eed4f6207d1cb7636970547bfd2eee26 (patch) | |
tree | a63888422f4a84f9e73b3e23025090127c31fe25 /src/drawscreen.c | |
parent | f768c3d19c518822d89dec4cc3947ddeea249316 (diff) | |
download | vim-git-471c0fa3eed4f6207d1cb7636970547bfd2eee26.tar.gz |
patch 9.0.0245: mechanism to prevent recursive screen updating is incompletev9.0.0245
Problem: Mechanism to prevent recursive screen updating is incomplete.
Solution: Add "redraw_not_allowed" and set it in build_stl_str_hl().
(issue #10952)
Diffstat (limited to 'src/drawscreen.c')
-rw-r--r-- | src/drawscreen.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/drawscreen.c b/src/drawscreen.c index 9e8d9eede..a9b3643ed 100644 --- a/src/drawscreen.c +++ b/src/drawscreen.c @@ -3154,7 +3154,7 @@ redraw_win_later( win_T *wp, int type) { - if (!exiting && wp->w_redr_type < type) + if (!exiting && !redraw_not_allowed && wp->w_redr_type < type) { wp->w_redr_type = type; if (type >= UPD_NOT_VALID) @@ -3186,7 +3186,17 @@ redraw_all_later(int type) FOR_ALL_WINDOWS(wp) redraw_win_later(wp, type); // This may be needed when switching tabs. - if (must_redraw < type) + set_must_redraw(type); +} + +/* + * Set "must_redraw" to "type" unless it already has a higher value + * or it is currently not allowed. + */ + void +set_must_redraw(int type) +{ + if (!redraw_not_allowed && must_redraw < type) must_redraw = type; } |