# HG changeset patch # User Richard M. Stallman # Date 807491945 0 # Node ID 27b568b455b1a12b62612dbd8a9638bdc5d45e4a # Parent 69dcdd99fd8d46596fad7799954c565847eab6cc (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. diff -r 69dcdd99fd8d -r 27b568b455b1 src/xdisp.c --- 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); } }