From 471c0fa3eed4f6207d1cb7636970547bfd2eee26 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 22 Aug 2022 15:19:16 +0100 Subject: patch 9.0.0245: mechanism to prevent recursive screen updating is incomplete Problem: Mechanism to prevent recursive screen updating is incomplete. Solution: Add "redraw_not_allowed" and set it in build_stl_str_hl(). (issue #10952) --- src/drawscreen.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/drawscreen.c') diff --git a/src/drawscreen.c b/src/drawscreen.c index 9e8d9eede1..a9b3643ed8 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; } -- cgit v1.2.3