diff options
author | Richard M. Stallman <rms@gnu.org> | 1995-08-03 23:19:05 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1995-08-03 23:19:05 +0000 |
commit | bc1cd93f1d5504ef5f7ef3d74011e29c389e253e (patch) | |
tree | 1bedeb5098e9e75f40d9f89308d1d7c725f745b9 /src/xdisp.c | |
parent | 9b4bb75ea92c0f32d5444a494083f8dd2e8847d4 (diff) | |
download | emacs-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.c | 19 |
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); } } |