changeset 72391:b2e68179adaa

* keyboard.c (read_char): Don't reset idle timers if a time limit is supplied.
author Chong Yidong <cyd@stupidchicken.com>
date Mon, 14 Aug 2006 18:32:23 +0000
parents 00776be18466
children 17d65e848c72
files src/ChangeLog src/keyboard.c
diffstat 2 files changed, 17 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Mon Aug 14 09:58:12 2006 +0000
+++ b/src/ChangeLog	Mon Aug 14 18:32:23 2006 +0000
@@ -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.
--- a/src/keyboard.c	Mon Aug 14 09:58:12 2006 +0000
+++ b/src/keyboard.c	Mon Aug 14 18:32:23 2006 +0000
@@ -2679,7 +2679,14 @@
       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 @@
       /* 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);