diff options
| author | Gerd Moellmann | 2001-02-21 16:20:24 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 2001-02-21 16:20:24 +0000 |
| commit | 0528abe1c6e511d4d9b5795e0ed8e17d4a6e11cf (patch) | |
| tree | d67f695d5c15860c94638433013ec6cc7dee97cc /src | |
| parent | 75b71d85720db81838f9c51034e9db16ff598722 (diff) | |
| download | emacs-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/ChangeLog | 5 | ||||
| -rw-r--r-- | 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 @@ | |||
| 1 | 2001-02-21 Gerd Moellmann <gerd@gnu.org> | 1 | 2001-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 | { |