From 0528abe1c6e511d4d9b5795e0ed8e17d4a6e11cf Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Wed, 21 Feb 2001 16:20:24 +0000 Subject: [PATCH] (redisplay_internal): Do the mark_window_display_accurate after all windows have been redisplayed because this call resets flags in buffers which are needed for proper redisplay. --- src/ChangeLog | 5 +++++ src/xdisp.c | 26 +++++++++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 2253c41fcb6..6345e0d7c4e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,10 @@ 2001-02-21 Gerd Moellmann + * xdisp.c (redisplay_internal): Do the + mark_window_display_accurate after all windows have been + redisplayed because this call resets flags in buffers which are + needed for proper redisplay. + * keyboard.c, minibuf.c, lread.c, fns.c, eval.c: Use display_hourglass_p, start_hourglass, cancel_hourglass instead of the old names. diff --git a/src/xdisp.c b/src/xdisp.c index b693e26bb22..3cc2dd52e21 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -8374,6 +8374,9 @@ redisplay_internal (preserve_echo_area) if (consider_all_windows_p) { Lisp_Object tail, frame; + int i, n = 0, size = 50; + struct frame **updated + = (struct frame **) alloca (size * sizeof *updated); /* Clear the face cache eventually. */ if (clear_face_cache_count > CLEAR_FACE_CACHE_COUNT) @@ -8429,12 +8432,29 @@ redisplay_internal (preserve_echo_area) if (pause) break; - mark_window_display_accurate (f->root_window, 1); - if (frame_up_to_date_hook) - frame_up_to_date_hook (f); + if (n == size) + { + int nbytes = size * sizeof *updated; + struct frame **p = (struct frame **) alloca (2 * nbytes); + bcopy (updated, p, nbytes); + size *= 2; + } + + updated[n++] = f; } } } + + /* Do the mark_window_display_accurate after all windows have + been redisplayed because this call resets flags in buffers + which are needed for proper redisplay. */ + for (i = 0; i < n; ++i) + { + struct frame *f = updated[i]; + mark_window_display_accurate (f->root_window, 1); + if (frame_up_to_date_hook) + frame_up_to_date_hook (f); + } } else if (FRAME_VISIBLE_P (sf) && !FRAME_OBSCURED_P (sf)) { -- 2.39.5