• Eli Zaretskii's avatar
    Make face realization be more frame-specific · e573d08e
    Eli Zaretskii authored
    * 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.
frame.c 163 KB