changeset 34622:877ed6cab304

(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.
author Gerd Moellmann <gerd@gnu.org>
date Fri, 15 Dec 2000 17:14:34 +0000
parents 0a811c1d7a1d
children 0a6636fdd569
files src/dispnew.c
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/dispnew.c	Fri Dec 15 17:14:07 2000 +0000
+++ b/src/dispnew.c	Fri Dec 15 17:14:34 2000 +0000
@@ -3789,7 +3789,7 @@
       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 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 @@
 	       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,