Attempt to make redisplay more selective when changing fonts.
authorDmitry Antipov <dmantipov@yandex.ru>
Fri, 6 Sep 2013 07:00:29 +0000 (11:00 +0400)
committerDmitry Antipov <dmantipov@yandex.ru>
Fri, 6 Sep 2013 07:00:29 +0000 (11:00 +0400)
commitbd0443bb8799b908cefd0b11c86db6115180850d
tree04815e317561050f2ac00c16e69ad2147e51dfb0
parent397853249c7edc25dac2f6f2b9705fedb706916a
Attempt to make redisplay more selective when changing fonts.
* frame.h (struct frame): New bitfield fonts_changed.
* dispextern.h (fonts_changed_p, adjust_glyphs): Remove declaration.
(adjust_frame_glyphs): Add prototype.
* dispnew.c (fonts_changed_p): Remove.
(adjust_glyphs): Remove becase we do not
adjust matrices on all frames at once any more.
(adjust_frame_glyphs): Block and unblock input here.
(adjust_glyph_matrix): Use fonts_changed.
(change_frame_size_1): Use adjust_frame_glyphs.
* font.c (font_open_entity): Use fonts_changed.
* frame.c (set_menu_bar_lines, Fmake_terminal_frame):
* w32fns.c (x_set_menu_bar_lines, x_set_tool_bar_lines, Fx_show_tip):
* window.c (Fdelete_other_windows_internal, Fwindow_resize_apply)
(Fsplit_window_internal, Fdelete_window_internal, grow_mini_window)
(shrink_mini_window, Fresize_mini_window_internal)
(window_scroll_pixel_based, Fset_window_configuration)
(apply_window_adjustment, Fset_window_vscroll):
* xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines, Fx_show_tip):
Use adjust_frame_glyphs.
* xdisp.c (redisplay_tool_bar, redisplay_window, try_window)
(try_window_reusing_current_matrix, try_window_id, display_line)
(IT_EXPAND_MATRIX_WIDTH): Use fonts_changed.
(redisplay_internal): Consider fonts_changed and adjust frame
matrices for each frame only if the frame is visible.  If font
has been changed on some frame during full redisplay, retry
only visible frames where the font has been actually changed.
src/ChangeLog
src/dispextern.h
src/dispnew.c
src/font.c
src/frame.c
src/frame.h
src/w32fns.c
src/window.c
src/xdisp.c
src/xfns.c