]> git.eshelyaron.com Git - emacs.git/commitdiff
* keyboard.c (read_char): Don't reset idle timers if a time limit
authorChong Yidong <cyd@stupidchicken.com>
Mon, 14 Aug 2006 18:32:23 +0000 (18:32 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Mon, 14 Aug 2006 18:32:23 +0000 (18:32 +0000)
is supplied.

src/ChangeLog
src/keyboard.c

index 7bfc9a8896704b6a282220370450f4bb88d630ba..e97b91cf42ef2631a0635118216ac4f28960a812 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-14  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keyboard.c (read_char): Don't reset idle timers if a time limit
+       is supplied.
+
 2006-08-14  Kim F. Storm  <storm@cua.dk>
 
        * .gdbinit (pitx): Print iterator position.
index c715eadeb8027f8f1c1dfd1c3b387d8463d7e189..bea35a05731e3bc8e45e4265f13735e027b2d64f 100644 (file)
@@ -2679,7 +2679,14 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
       goto non_reread;
     }
 
-  timer_start_idle ();
+  /* Start idle timers.  If a time limit is supplied, we don't reset
+     idle timers.  This avoids an infinite recursion in case an idle
+     timer calls `sit-for'.  */
+
+  if (end_time)
+    timer_resume_idle ();
+  else
+    timer_start_idle ();
 
   /* If in middle of key sequence and minibuffer not active,
      start echoing if enough time elapses.  */
@@ -2879,7 +2886,10 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
       /* Actually read a character, waiting if necessary.  */
       save_getcjmp (save_jump);
       restore_getcjmp (local_getcjmp);
-      timer_start_idle ();
+      if (end_time)
+       timer_resume_idle ();
+      else
+       timer_start_idle ();
       c = kbd_buffer_get_event (&kb, used_mouse_menu, end_time);
       restore_getcjmp (save_jump);