emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master dee8674: Minor redisplay optimisations


From: Stefan Monnier
Subject: [Emacs-diffs] master dee8674: Minor redisplay optimisations
Date: Thu, 23 Feb 2017 21:17:10 -0500 (EST)

branch: master
commit dee8674414fae2323fd9cbf05aa762e72fa575e5
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>

    Minor redisplay optimisations
    
    * src/frame.c (Ficonify_frame): No need to redisplay everything.
    
    * src/xdisp.c (overlay_arrows_changed_p): Add `set_redisplay' argument.
    (redisplay_internal): Use it to avoid redisplaying everything.
    (try_window_id): Use it keep the same behavior as before.
---
 src/frame.c |  3 ---
 src/xdisp.c | 18 +++++++++++-------
 2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/frame.c b/src/frame.c
index d0f653f..5e1e2f1 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -2156,9 +2156,6 @@ If omitted, FRAME defaults to the currently selected 
frame.  */)
 #endif
     }
 
-  /* Make menu bar update for the Buffers and Frames menus.  */
-  windows_or_buffers_changed = 17;
-
   return Qnil;
 }
 
diff --git a/src/xdisp.c b/src/xdisp.c
index e59934d..b0ff627 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -13336,7 +13336,7 @@ overlay_arrow_in_current_buffer_p (void)
    has changed.  */
 
 static bool
-overlay_arrows_changed_p (void)
+overlay_arrows_changed_p (bool set_redisplay)
 {
   Lisp_Object vlist;
 
@@ -13356,7 +13356,12 @@ overlay_arrows_changed_p (void)
                Fget (var, Qlast_arrow_position))
          || ! (pstr = overlay_arrow_string_or_property (var),
                EQ (pstr, Fget (var, Qlast_arrow_string))))
-       return true;
+       {
+         if (set_redisplay)
+           bset_redisplay (XMARKER (val)->buffer);
+         else
+           return true;
+       }
     }
   return false;
 }
@@ -13781,10 +13786,9 @@ redisplay_internal (void)
 
   /* If specs for an arrow have changed, do thorough redisplay
      to ensure we remove any arrow that should no longer exist.  */
-  if (overlay_arrows_changed_p ())
-    /* Apparently, this is the only case where we update other windows,
-       without updating other mode-lines.  */
-    windows_or_buffers_changed = 49;
+  /* Apparently, this is the only case where we update other windows,
+     without updating other mode-lines.  */
+  overlay_arrows_changed_p (true);
 
   consider_all_windows_p = (update_mode_lines
                            || windows_or_buffers_changed);
@@ -18282,7 +18286,7 @@ try_window_id (struct window *w)
 
   /* Can't use this if overlay arrow position and/or string have
      changed.  */
-  if (overlay_arrows_changed_p ())
+  if (overlay_arrows_changed_p (false))
     GIVE_UP (12);
 
   /* When word-wrap is on, adding a space to the first word of a



reply via email to

[Prev in Thread] Current Thread [Next in Thread]