aboutsummaryrefslogtreecommitdiffstats
path: root/src/xdisp.c
diff options
context:
space:
mode:
authorRichard M. Stallman <[email protected]>1997-07-10 01:03:05 +0000
committerRichard M. Stallman <[email protected]>1997-07-10 01:03:05 +0000
commit8b32d885642a70dbaed95717009670e4d4afb95c (patch)
tree0898d997459e430c2d7bf803b54f1e0a415963f6 /src/xdisp.c
parentb3bd5cbcdb0066dab4652dc54a6325796363256e (diff)
(redisplay_internal): Fix previous change.
Diffstat (limited to 'src/xdisp.c')
-rw-r--r--src/xdisp.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 773d798779..3f89898d38 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -876,6 +876,8 @@ redisplay_internal (preserve_echo_area)
return;
#endif
+ retry:
+
if (! FRAME_WINDOW_P (selected_frame)
&& previous_terminal_frame != selected_frame)
{
@@ -891,14 +893,12 @@ redisplay_internal (preserve_echo_area)
Do this before checking for resized or garbaged frames; they want
to know if their frames are visible.
See the comment in frame.h for FRAME_SAMPLE_VISIBILITY. */
- number_of_frames_redisplayed = 0;
{
Lisp_Object tail, frame;
FOR_EACH_FRAME (tail, frame)
{
FRAME_SAMPLE_VISIBILITY (XFRAME (frame));
- number_of_frames_redisplayed++;
/* Clear out all the display lines in which we will generate the
glyphs to display. */
@@ -967,6 +967,9 @@ redisplay_internal (preserve_echo_area)
Fmarker_position (XBUFFER (w->buffer)->mark))))
this_line_bufpos = -1;
+ /* This is in case we goto update, below. */
+ number_of_frames_redisplayed = 1;
+
tlbufpos = this_line_bufpos;
tlendpos = this_line_endpos;
if (!all_windows && tlbufpos > 0 && NILP (w->update_mode_line)
@@ -1141,6 +1144,7 @@ redisplay_internal (preserve_echo_area)
/* Recompute # windows showing selected buffer.
This will be incremented each time such a window is displayed. */
buffer_shared = 0;
+ number_of_frames_redisplayed = 0;
FOR_EACH_FRAME (tail, frame)
{
@@ -1154,7 +1158,10 @@ redisplay_internal (preserve_echo_area)
(*condemn_scroll_bars_hook) (f);
if (FRAME_VISIBLE_P (f))
- redisplay_windows (FRAME_ROOT_WINDOW (f), preserve_echo_area);
+ {
+ redisplay_windows (FRAME_ROOT_WINDOW (f), preserve_echo_area);
+ number_of_frames_redisplayed++;
+ }
/* Any scroll bars which redisplay_windows should have nuked
should now go away. */
@@ -1168,6 +1175,7 @@ redisplay_internal (preserve_echo_area)
redisplay_window (selected_window, 1, preserve_echo_area);
if (!WINDOW_FULL_WIDTH_P (w))
preserve_other_columns (w);
+ number_of_frames_redisplayed = 1;
}
update:
@@ -1336,10 +1344,10 @@ update:
/* Change frame size now if a change is pending. */
do_pending_window_change ();
- /* If we just did a pending size change, redisplay again
- for the new size. */
+ /* If we just did a pending size change, or have additional
+ visible frames, redisplay again. */
if (windows_or_buffers_changed && !pause)
- redisplay ();
+ goto retry;
}
/* Redisplay, but leave alone any recent echo area message