]> git.eshelyaron.com Git - emacs.git/commitdiff
(update_window): Detect pending input every nth line
authorGerd Moellmann <gerd@gnu.org>
Fri, 15 Dec 2000 17:14:56 +0000 (17:14 +0000)
committerGerd Moellmann <gerd@gnu.org>
Fri, 15 Dec 2000 17:14:56 +0000 (17:14 +0000)
updated, i.e. do it depending on real work done, and not on the
vpos of the line.

src/ChangeLog
src/dispnew.c

index 989ff4b94004bd03b76b5fa587b3de298f5ab52e..0cd551b3512b752b21fb26fb85ed46c805581bef 100644 (file)
@@ -1,5 +1,12 @@
 2000-12-15  Gerd Moellmann  <gerd@gnu.org>
 
+       * dispnew.c (update_window): Detect pending input every nth line
+       updated, i.e. do it depending on real work done, and not on the
+       vpos of the line.
+
+       * xterm.c (expose_window): Don't redraw the window that's
+       currently being updated.
+
        * window.c (Fset_window_point): Remove test for
        cursor_in_non_selected_windows.
 
index 7694233e36fecd553e0a7f8c0473ed7954015205..dcff59d569865ef1874abee3eb719a2d11ef3955 100644 (file)
@@ -3789,7 +3789,7 @@ update_window (w, force_p)
       struct glyph_row *row, *end;
       struct glyph_row *mode_line_row;
       struct glyph_row *header_line_row = NULL;
-      int yb, changed_p = 0, mouse_face_overwritten_p = 0;
+      int yb, changed_p = 0, mouse_face_overwritten_p = 0, n_updated;
 
       rif->update_window_begin_hook (w);
       yb = window_text_bottom_y (w);
@@ -3844,7 +3844,7 @@ update_window (w, force_p)
        }
 
       /* Update the rest of the lines.  */
-      for (; row < end && (force_p || !input_pending); ++row)
+      for (n_updated = 0; row < end && (force_p || !input_pending); ++row)
        if (row->enabled_p)
          {
            int vpos = MATRIX_ROW_VPOS (row, desired_matrix);
@@ -3854,7 +3854,7 @@ update_window (w, force_p)
               detect_input_pending.  If it's done too often,
               scrolling large windows with repeated scroll-up
               commands will too quickly pause redisplay.  */
-           if (!force_p && vpos % preempt_count == 0)
+           if (!force_p && ++n_updated % preempt_count == 0)
              detect_input_pending ();
 
            changed_p |= update_window_line (w, vpos,