1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-24 21:41:48 -08:00

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.
This commit is contained in:
Stefan Monnier 2017-02-23 21:17:04 -05:00
parent 407e650413
commit dee8674414
2 changed files with 11 additions and 10 deletions

View file

@ -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;
}

View file

@ -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