]> code.delx.au - gnu-emacs/commit
Make face realization be more frame-specific
authorEli Zaretskii <eliz@gnu.org>
Sat, 26 Sep 2015 06:50:58 +0000 (09:50 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 26 Sep 2015 06:50:58 +0000 (09:50 +0300)
commite573d08ef15f0431ad8289b4242c49826f20efb6
tree323f37b911569c654747df2047f236ad5d316587
parent3fbc53b09c21d5657c62a4a295b5b70a6ea5d661
Make face realization be more frame-specific

* src/frame.h (struct f): New flag face_change.
* src/xfaces.c (Finternal_make_lisp_face)
(Finternal_copy_lisp_face, Finternal_set_lisp_face_attribute)
(update_face_from_frame_parameter): Set the face_change flag only
for the frame whose faces are affected.
* src/xdisp.c (init_iterator): If a frame's face_change flag is
set, free faces only on that frame.
(redisplay_internal): Disable "display optimization 1" if the
frame's face_change flag is set.
(redisplay_window): Don't allow skipping a window's redisplay if
its frame's face_change flag is set.
* src/frame.c (x_set_screen_gamma): Instead of calling
Fclear_face_cache, call clear_face_cache and set
windows_or_buffers_changed to a non-zero value.  This avoids
setting the global face_change flag that triggers face realization
on all frames and thorough redisplay of all of them.

* lisp/term/tty-colors.el (tty-register-default-colors): Don't
clear face cache if the selected frame is a GUI frame.
lisp/term/tty-colors.el
src/frame.c
src/frame.h
src/xdisp.c
src/xfaces.c