* dispnew.c (set_window_update_flags): Add buffer arg. Adjust comment.
(redraw_frame, update_frame): Adjust users. * dispextern.h (set_window_update_flags): Adjust prototype. * xdisp.c (redisplay_internal): When updating all frames with zero windows_or_buffers_changed, assume that only the windows that shows current buffer should be really updated.
This commit is contained in:
parent
ec95982c36
commit
ecab13d4aa
4 changed files with 25 additions and 10 deletions
|
@ -1,3 +1,12 @@
|
|||
2013-10-08 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
* dispnew.c (set_window_update_flags): Add buffer arg. Adjust comment.
|
||||
(redraw_frame, update_frame): Adjust users.
|
||||
* dispextern.h (set_window_update_flags): Adjust prototype.
|
||||
* xdisp.c (redisplay_internal): When updating all frames with zero
|
||||
windows_or_buffers_changed, assume that only the windows that shows
|
||||
current buffer should be really updated.
|
||||
|
||||
2013-10-08 Dmitry Antipov <dmantipov@yandex.ru>
|
||||
|
||||
Do not allocate huge temporary memory areas and objects while encoding
|
||||
|
|
|
@ -3460,7 +3460,7 @@ void blank_row (struct window *, struct glyph_row *, int);
|
|||
void clear_glyph_matrix_rows (struct glyph_matrix *, int, int);
|
||||
void clear_glyph_row (struct glyph_row *);
|
||||
void prepare_desired_row (struct glyph_row *);
|
||||
void set_window_update_flags (struct window *, bool);
|
||||
void set_window_update_flags (struct window *, struct buffer *, bool);
|
||||
void update_single_window (struct window *, bool);
|
||||
void do_pending_window_change (bool);
|
||||
void change_frame_size (struct frame *, int, int, bool, bool, bool);
|
||||
|
|
|
@ -2910,7 +2910,7 @@ redraw_frame (struct frame *f)
|
|||
/* Mark all windows as inaccurate, so that every window will have
|
||||
its redisplay done. */
|
||||
mark_window_display_accurate (FRAME_ROOT_WINDOW (f), 0);
|
||||
set_window_update_flags (XWINDOW (FRAME_ROOT_WINDOW (f)), 1);
|
||||
set_window_update_flags (XWINDOW (FRAME_ROOT_WINDOW (f)), NULL, 1);
|
||||
f->garbaged = 0;
|
||||
}
|
||||
|
||||
|
@ -3041,7 +3041,7 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p)
|
|||
|
||||
do_pause:
|
||||
/* Reset flags indicating that a window should be updated. */
|
||||
set_window_update_flags (root_window, 0);
|
||||
set_window_update_flags (root_window, NULL, 0);
|
||||
|
||||
display_completed = !paused_p;
|
||||
return paused_p;
|
||||
|
@ -3820,17 +3820,18 @@ set_window_cursor_after_update (struct window *w)
|
|||
}
|
||||
|
||||
|
||||
/* Set WINDOW->must_be_updated_p to ON_P for all windows in the window
|
||||
tree rooted at W. */
|
||||
/* If B is NULL, set WINDOW->must_be_updated_p to ON_P for all windows in
|
||||
the window tree rooted at W. Otherwise set WINDOW->must_be_updated_p
|
||||
to ON_P only for windows that displays B. */
|
||||
|
||||
void
|
||||
set_window_update_flags (struct window *w, bool on_p)
|
||||
set_window_update_flags (struct window *w, struct buffer *b, bool on_p)
|
||||
{
|
||||
while (w)
|
||||
{
|
||||
if (WINDOWP (w->contents))
|
||||
set_window_update_flags (XWINDOW (w->contents), on_p);
|
||||
else
|
||||
set_window_update_flags (XWINDOW (w->contents), b, on_p);
|
||||
else if (!(b && b != XBUFFER (w->contents)))
|
||||
w->must_be_updated_p = on_p;
|
||||
|
||||
w = NILP (w->next) ? 0 : XWINDOW (w->next);
|
||||
|
|
|
@ -13437,8 +13437,13 @@ redisplay_internal (void)
|
|||
unrequest_sigio ();
|
||||
STOP_POLLING;
|
||||
|
||||
/* Update the display. */
|
||||
set_window_update_flags (XWINDOW (f->root_window), 1);
|
||||
/* Mark windows on frame F to update. If we decide to
|
||||
update all frames but windows_or_buffers_changed is
|
||||
zero, we assume that only the windows that shows
|
||||
current buffer should be really updated. */
|
||||
set_window_update_flags
|
||||
(XWINDOW (f->root_window),
|
||||
(windows_or_buffers_changed ? NULL : current_buffer), 1);
|
||||
pending |= update_frame (f, 0, 0);
|
||||
f->cursor_type_changed = 0;
|
||||
f->updated_p = 1;
|
||||
|
|
Loading…
Add table
Reference in a new issue