diff options
author | Eli Zaretskii <eliz@gnu.org> | 2015-09-26 09:50:58 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2015-09-26 09:50:58 +0300 |
commit | e573d08ef15f0431ad8289b4242c49826f20efb6 (patch) | |
tree | 323f37b911569c654747df2047f236ad5d316587 /src/frame.h | |
parent | 3fbc53b09c21d5657c62a4a295b5b70a6ea5d661 (diff) | |
download | emacs-e573d08ef15f0431ad8289b4242c49826f20efb6.tar.gz |
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.
Diffstat (limited to 'src/frame.h')
-rw-r--r-- | src/frame.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/frame.h b/src/frame.h index 546bede213d..af0dadb3d99 100644 --- a/src/frame.h +++ b/src/frame.h @@ -335,6 +335,9 @@ struct frame /* Set to true after this frame was made by `make-frame'. */ bool_bf after_make_frame : 1; + /* Non-zero if this frame's faces need to be recomputed. */ + bool_bf face_change : 1; + /* Bitfield area ends here. */ /* Number of lines (rounded up) of tool bar. REMOVE THIS */ |