]> code.delx.au - gnu-emacs/commitdiff
(update_frame): Check for input pending on entry.
authorKim F. Storm <storm@cua.dk>
Sat, 17 Jun 2006 00:11:59 +0000 (00:11 +0000)
committerKim F. Storm <storm@cua.dk>
Sat, 17 Jun 2006 00:11:59 +0000 (00:11 +0000)
(update_window, update_frame_1): Break loop if input is detected.

src/dispnew.c

index 43f86a32f4cb6b118115c70ae643e01a80a33113..df92fc395d2ed402d7b8969d1394f600844904f9 100644 (file)
@@ -3849,6 +3849,12 @@ update_frame (f, force_p, inhibit_hairy_id_p)
       double p = XFLOATINT (Vredisplay_preemption_period);
       int sec, usec;
 
+      if (detect_input_pending_ignore_squeezables ())
+       {
+         paused_p = 1;
+         goto do_pause;
+       }
+
       sec = (int) p;
       usec = (p - sec) * 1000000;
 
@@ -3936,6 +3942,7 @@ update_frame (f, force_p, inhibit_hairy_id_p)
 #endif
     }
 
+ do_pause:
   /* Reset flags indicating that a window should be updated.  */
   set_window_update_flags (root_window, 0);
 
@@ -4262,7 +4269,8 @@ update_window (w, force_p)
                if (EMACS_TIME_NEG_P (dif))
                  {
                    EMACS_ADD_TIME (preemption_next_check, tm, preemption_period);
-                   detect_input_pending_ignore_squeezables ();
+                   if (detect_input_pending_ignore_squeezables ())
+                     break;
                  }
              }
 #else
@@ -5288,7 +5296,8 @@ update_frame_1 (f, force_p, inhibit_id_p)
              if (EMACS_TIME_NEG_P (dif))
                {
                  EMACS_ADD_TIME (preemption_next_check, tm, preemption_period);
-                 detect_input_pending_ignore_squeezables ();
+                 if (detect_input_pending_ignore_squeezables ())
+                   break;
                }
            }
 #else