changeset 12765:27b568b455b1

(redisplay): When displaying a terminal frame, if it isn't the same one as last time, clear it and redraw. Don't redisplay mini_frame as well, if it is a termcap frame.
author Richard M. Stallman <rms@gnu.org>
date Thu, 03 Aug 1995 23:19:05 +0000
parents 69dcdd99fd8d
children eed43624bc00
files src/xdisp.c
diffstat 1 files changed, 18 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Thu Aug 03 22:29:44 1995 +0000
+++ b/src/xdisp.c	Thu Aug 03 23:19:05 1995 +0000
@@ -779,6 +779,9 @@
    no more than once ever 1000 redisplays.  */
 static int clear_face_cache_count;
 
+/* Record the previous terminal frame we displayed.  */
+static FRAME_PTR previous_terminal_frame;
+
 void
 redisplay ()
 {
@@ -792,6 +795,19 @@
   if (noninteractive)
     return;
 
+#ifdef MULTI_FRAME
+  if (FRAME_TERMCAP_P (selected_frame)
+      && previous_terminal_frame != selected_frame)
+    {
+      /* Since frames on an ASCII terminal share the same display area,
+	 displaying a different frame means redisplay the whole thing.  */
+      windows_or_buffers_changed++;
+      SET_FRAME_GARBAGED (selected_frame);
+      XSETFRAME (Vterminal_frame, selected_frame);
+    }
+  previous_terminal_frame = selected_frame;
+#endif
+
   /* Set the visible flags for all frames.
      Do this before checking for resized or garbaged frames; they want
      to know if their frames are visible.
@@ -1094,7 +1110,8 @@
 	FRAME_PTR mini_frame
 	  = XFRAME (WINDOW_FRAME (XWINDOW (minibuf_window)));
 	
-	if (mini_frame != selected_frame)
+	if (mini_frame != selected_frame
+	    && ! FRAME_TERMCAP_P (mini_frame))
 	  pause |= update_frame (mini_frame, 0, 0);
       }
     }