# HG changeset patch # User Chong Yidong # Date 1155663561 0 # Node ID 949ddf473439658c5ad08423b624a321dfb6ef8b # Parent 9cad9282afd899fa64b49591f606fd9b4fb2f6f3 * keyboard.c (read_char): Don't change idle timer state at all if end_time is supplied. diff -r 9cad9282afd8 -r 949ddf473439 src/ChangeLog --- a/src/ChangeLog Tue Aug 15 11:59:09 2006 +0000 +++ b/src/ChangeLog Tue Aug 15 17:39:21 2006 +0000 @@ -1,3 +1,8 @@ +2006-08-15 Chong Yidong + + * keyboard.c (read_char): Don't change idle timer state at all if + end_time is supplied. + 2006-08-15 Kenichi Handa * coding.c (ONE_MORE_BYTE_CHECK_MULTIBYTE): New arg RET. If SRC diff -r 9cad9282afd8 -r 949ddf473439 src/keyboard.c --- a/src/keyboard.c Tue Aug 15 11:59:09 2006 +0000 +++ b/src/keyboard.c Tue Aug 15 17:39:21 2006 +0000 @@ -2679,13 +2679,11 @@ goto non_reread; } - /* 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 + /* Start idle timers if no time limit is supplied. We don't do it + if a time limit is supplied to avoid an infinite recursion in the + situation where an idle timer calls `sit-for'. */ + + if (!end_time) timer_start_idle (); /* If in middle of key sequence and minibuffer not active, @@ -2756,7 +2754,8 @@ c = read_char_x_menu_prompt (nmaps, maps, prev_event, used_mouse_menu); /* Now that we have read an event, Emacs is not idle. */ - timer_stop_idle (); + if (!end_time) + timer_stop_idle (); goto exit; } @@ -2886,9 +2885,7 @@ /* Actually read a character, waiting if necessary. */ save_getcjmp (save_jump); restore_getcjmp (local_getcjmp); - if (end_time) - timer_resume_idle (); - else + if (!end_time) timer_start_idle (); c = kbd_buffer_get_event (&kb, used_mouse_menu, end_time); restore_getcjmp (save_jump); @@ -2941,7 +2938,8 @@ non_reread: - timer_stop_idle (); + if (!end_time) + timer_stop_idle (); RESUME_POLLING; if (NILP (c)) @@ -2975,7 +2973,7 @@ last_input_char = c; Fcommand_execute (tem, Qnil, Fvector (1, &last_input_char), Qt); - if (CONSP (c) && EQ (XCAR (c), Qselect_window)) + if (CONSP (c) && EQ (XCAR (c), Qselect_window) && !end_time) /* We stopped being idle for this event; undo that. This prevents automatic window selection (under mouse_autoselect_window from acting as a real input event, for @@ -3181,7 +3179,8 @@ show_help_echo (help, window, object, position, 0); /* We stopped being idle for this event; undo that. */ - timer_resume_idle (); + if (!end_time) + timer_resume_idle (); goto retry; }