summaryrefslogtreecommitdiff
path: root/src/xdisp.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1995-08-03 23:19:05 +0000
committerRichard M. Stallman <rms@gnu.org>1995-08-03 23:19:05 +0000
commitbc1cd93f1d5504ef5f7ef3d74011e29c389e253e (patch)
tree1bedeb5098e9e75f40d9f89308d1d7c725f745b9 /src/xdisp.c
parent9b4bb75ea92c0f32d5444a494083f8dd2e8847d4 (diff)
downloademacs-bc1cd93f1d5504ef5f7ef3d74011e29c389e253e.tar.gz
(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.
Diffstat (limited to 'src/xdisp.c')
-rw-r--r--src/xdisp.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 6a426f80b5c..6a4b5dc34ac 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -779,6 +779,9 @@ static int do_verify_charstarts;
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 @@ redisplay ()
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 @@ update:
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);
}
}