From 20de20dce1e18aa1e995b2391efa9448d764eb7a Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Thu, 3 Aug 1995 23:19:05 +0000 Subject: [PATCH] (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. --- src/xdisp.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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); } } -- 2.39.2