changeset 18703:2e597c7309b3

(redisplay_internal): Fix previous change.
author Richard M. Stallman <rms@gnu.org>
date Thu, 10 Jul 1997 01:03:05 +0000
parents df65a2e6eb4e
children 259f416a8485
files src/xdisp.c
diffstat 1 files changed, 14 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Wed Jul 09 23:08:42 1997 +0000
+++ b/src/xdisp.c	Thu Jul 10 01:03:05 1997 +0000
@@ -876,6 +876,8 @@
     return;
 #endif
 
+ retry:
+
   if (! FRAME_WINDOW_P (selected_frame)
       && previous_terminal_frame != selected_frame)
     {
@@ -891,14 +893,12 @@
      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 @@
 		  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 @@
       /* 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 @@
 		(*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_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 @@
   /* 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