* keyboard.c (read_char): Don't change idle timer state at all if

end_time is supplied.
This commit is contained in:
Chong Yidong 2006-08-15 17:39:21 +00:00
parent 29cf022180
commit 3236e6b849
2 changed files with 17 additions and 13 deletions

View file

@ -1,3 +1,8 @@
2006-08-15 Chong Yidong <cyd@stupidchicken.com>
* keyboard.c (read_char): Don't change idle timer state at all if
end_time is supplied.
2006-08-15 Kenichi Handa <handa@m17n.org>
* coding.c (ONE_MORE_BYTE_CHECK_MULTIBYTE): New arg RET. If SRC

View file

@ -2679,13 +2679,11 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
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'. */
/* 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_resume_idle ();
else
if (!end_time)
timer_start_idle ();
/* If in middle of key sequence and minibuffer not active,
@ -2756,7 +2754,8 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
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 @@ 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);
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 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
non_reread:
timer_stop_idle ();
if (!end_time)
timer_stop_idle ();
RESUME_POLLING;
if (NILP (c))
@ -2975,7 +2973,7 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
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 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu, end_time)
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;
}