emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Excessive redraw of overlapping/overlapped rows?


From: YAMAMOTO Mitsuharu
Subject: Excessive redraw of overlapping/overlapped rows?
Date: Mon, 26 Sep 2005 17:33:00 +0900
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.6 (Marutamachi) APEL/10.6 Emacs/22.0.50 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI)

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
                                address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]