diff options
| author | Richard M. Stallman <rms@gnu.org> | 1996-01-29 04:50:16 +0000 |
|---|---|---|
| committer | Richard M. Stallman <rms@gnu.org> | 1996-01-29 04:50:16 +0000 |
| commit | fb4c362712689ad37854943f8fd2ae9e954ced31 (patch) | |
| tree | 7ee440eab0345757943002f1fda0e5fce8bf5c54 /src/process.c | |
| parent | 8a9fe4d22b9108dbb75a08989f8c735ef73d4b37 (diff) | |
| download | emacs-fb4c362712689ad37854943f8fd2ae9e954ced31.tar.gz | |
(wait_reading_process_input): Call timer_check
and shorten the inner delay if appropriate.
Diffstat (limited to 'src/process.c')
| -rw-r--r-- | src/process.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/process.c b/src/process.c index c68309432b5..2dd1a46c32d 100644 --- a/src/process.c +++ b/src/process.c @@ -249,6 +249,8 @@ int proc_buffered_char[MAXDESC]; static Lisp_Object get_process (); +extern EMACS_TIME timer_check (); + /* Maximum number of bytes to send to a pty without an eof. */ static int pty_max_bytes; @@ -2053,6 +2055,22 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display) EMACS_SET_SECS_USECS (timeout, 100000, 0); } + /* If our caller will not immediately handle keyboard events, + run timer events directly. + (Callers that will immediately read keyboard events + call timer_delay on their own.) */ + if (read_kbd >= 0) + { + EMACS_TIME timer_delay = timer_check (1); + if (! EMACS_TIME_NEG_P (timer_delay)) + { + EMACS_TIME difference; + EMACS_SUB_TIME (difference, timer_delay, timeout); + if (EMACS_TIME_NEG_P (difference)) + timeout = timer_delay; + } + } + /* Cause C-g and alarm signals to take immediate action, and cause input available signals to zero out timeout. |
