In window_update (dispnew.c), overlapping/overlapped rows are redrawn
if `changed_p' is non-zero.
if (changed_p && rif->fix_overlapping_area)
{
redraw_overlapped_rows (w, yb);
redraw_overlapping_rows (w, yb);
}
but this variable is set when either the mode line or the header line
is updated.
if (mode_line_row->mode_line_p && mode_line_row->enabled_p)
{
mode_line_row->y = yb;
update_window_line (w, MATRIX_ROW_VPOS (mode_line_row,
desired_matrix),
&mouse_face_overwritten_p);
changed_p = 1;
}
So when a user moves the cursor vertically and the line number
displayed in the mode line is changed, the whole
overlapping/overlapped rows get redrawn. It significantly degrades
performance of cursor movement for such an environment that text
drawing is not so fast.
Is it OK to not set `changed_p' for the case of mode/header line
updates?
YAMAMOTO Mitsuharu
[EMAIL PROTECTED]
_______________________________________________
Emacs-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-devel