aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChong Yidong <[email protected]>2012-06-17 18:11:39 +0800
committerChong Yidong <[email protected]>2012-06-17 18:11:39 +0800
commit96a313a1daea14c0b125857f2775aae911045349 (patch)
treebb6100c0caf1cdec71d37c1c12b4a940b9b743c9
parent20ca2e9451e7dbae9b24bf759c4374a674c9270a (diff)
Optimization to avoid redisplaying hidden terminal frames.
* xdisp.c (redisplay_internal): No need to redisplay terminal frames that are not on top.
-rw-r--r--src/ChangeLog5
-rw-r--r--src/xdisp.c6
2 files changed, 11 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index ba029611cd..309f4447db 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2012-06-17 Chong Yidong <[email protected]>
+
+ * xdisp.c (redisplay_internal): No need to redisplay terminal
+ frames that are not on top.
+
2012-06-17 Troels Nielsen <[email protected]>
* process.c (make_process): Initialize write_queue.
diff --git a/src/xdisp.c b/src/xdisp.c
index cd5f03d34a..f371346589 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -13317,6 +13317,12 @@ redisplay_internal (void)
{
struct frame *f = XFRAME (frame);
+ /* We don't have to do anything for unselected terminal
+ frames. */
+ if ((FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f))
+ && !EQ (FRAME_TTY (f)->top_frame, frame))
+ continue;
+
if (FRAME_WINDOW_P (f) || FRAME_TERMCAP_P (f) || f == sf)
{
if (! EQ (frame, selected_frame))