aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGerd Moellmann2001-02-21 16:20:24 +0000
committerGerd Moellmann2001-02-21 16:20:24 +0000
commit0528abe1c6e511d4d9b5795e0ed8e17d4a6e11cf (patch)
treed67f695d5c15860c94638433013ec6cc7dee97cc /src
parent75b71d85720db81838f9c51034e9db16ff598722 (diff)
downloademacs-0528abe1c6e511d4d9b5795e0ed8e17d4a6e11cf.tar.gz
emacs-0528abe1c6e511d4d9b5795e0ed8e17d4a6e11cf.zip
(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.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/xdisp.c26
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 @@
12001-02-21 Gerd Moellmann <gerd@gnu.org> 12001-02-21 Gerd Moellmann <gerd@gnu.org>
2 2
3 * xdisp.c (redisplay_internal): Do the
4 mark_window_display_accurate after all windows have been
5 redisplayed because this call resets flags in buffers which are
6 needed for proper redisplay.
7
3 * keyboard.c, minibuf.c, lread.c, fns.c, eval.c: Use 8 * keyboard.c, minibuf.c, lread.c, fns.c, eval.c: Use
4 display_hourglass_p, start_hourglass, cancel_hourglass instead of 9 display_hourglass_p, start_hourglass, cancel_hourglass instead of
5 the old names. 10 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)
8374 if (consider_all_windows_p) 8374 if (consider_all_windows_p)
8375 { 8375 {
8376 Lisp_Object tail, frame; 8376 Lisp_Object tail, frame;
8377 int i, n = 0, size = 50;
8378 struct frame **updated
8379 = (struct frame **) alloca (size * sizeof *updated);
8377 8380
8378 /* Clear the face cache eventually. */ 8381 /* Clear the face cache eventually. */
8379 if (clear_face_cache_count > CLEAR_FACE_CACHE_COUNT) 8382 if (clear_face_cache_count > CLEAR_FACE_CACHE_COUNT)
@@ -8429,12 +8432,29 @@ redisplay_internal (preserve_echo_area)
8429 if (pause) 8432 if (pause)
8430 break; 8433 break;
8431 8434
8432 mark_window_display_accurate (f->root_window, 1); 8435 if (n == size)
8433 if (frame_up_to_date_hook) 8436 {
8434 frame_up_to_date_hook (f); 8437 int nbytes = size * sizeof *updated;
8438 struct frame **p = (struct frame **) alloca (2 * nbytes);
8439 bcopy (updated, p, nbytes);
8440 size *= 2;
8441 }
8442
8443 updated[n++] = f;
8435 } 8444 }
8436 } 8445 }
8437 } 8446 }
8447
8448 /* Do the mark_window_display_accurate after all windows have
8449 been redisplayed because this call resets flags in buffers
8450 which are needed for proper redisplay. */
8451 for (i = 0; i < n; ++i)
8452 {
8453 struct frame *f = updated[i];
8454 mark_window_display_accurate (f->root_window, 1);
8455 if (frame_up_to_date_hook)
8456 frame_up_to_date_hook (f);
8457 }
8438 } 8458 }
8439 else if (FRAME_VISIBLE_P (sf) && !FRAME_OBSCURED_P (sf)) 8459 else if (FRAME_VISIBLE_P (sf) && !FRAME_OBSCURED_P (sf))
8440 { 8460 {