summaryrefslogtreecommitdiff
path: root/src/process.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1997-06-22 09:06:04 +0000
committerRichard M. Stallman <rms@gnu.org>1997-06-22 09:06:04 +0000
commit5d5beb624a0c929d924341dc0d0cc0cad915aeda (patch)
tree62ca39ae492d2b0e76ad3c04a8448aec4dc41e31 /src/process.c
parentfa526c4a22cd87b680928c082cf3e74d87f0da55 (diff)
downloademacs-5d5beb624a0c929d924341dc0d0cc0cad915aeda.tar.gz
(wait_reading_process_input): Don't check for
keyboard input if wait_for_cell.
Diffstat (limited to 'src/process.c')
-rw-r--r--src/process.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/process.c b/src/process.c
index 357974588d9..c51d862969b 100644
--- a/src/process.c
+++ b/src/process.c
@@ -2413,6 +2413,21 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
kill (getpid (), SIGIO);
#endif
+#if 0 /* When polling is used, interrupt_input is 0,
+ so get_input_pending should read the input.
+ So this should not be needed. */
+ /* If we are using polling for input,
+ and we see input available, make it get read now.
+ Otherwise it might not actually get read for a second.
+ And on hpux, since we turn off polling in wait_reading_process_input,
+ it might never get read at all if we don't spend much time
+ outside of wait_reading_process_input. */
+ if (XINT (read_kbd) && interrupt_input
+ && keyboard_bit_set (&Available)
+ && input_polling_used ())
+ kill (getpid (), SIGALRM);
+#endif
+
/* Check for keyboard input */
/* If there is any, return immediately
to give it higher priority than subprocesses */
@@ -2430,6 +2445,7 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
&& requeued_events_pending_p ())
break;
+#if 0
/* If wait_for_cell. check for keyboard input
but don't run any timers.
??? (It seems wrong to me to check for keyboard
@@ -2443,19 +2459,20 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
if (detect_input_pending ())
break;
}
+#endif
/* Exit now if the cell we're waiting for became non-nil. */
if (wait_for_cell && ! NILP (*wait_for_cell))
break;
#ifdef SIGIO
- /* If we think we have keyboard input waiting, but didn't get SIGIO
+ /* If we think we have keyboard input waiting, but didn't get SIGIO,
go read it. This can happen with X on BSD after logging out.
In that case, there really is no input and no SIGIO,
but select says there is input. */
if (XINT (read_kbd) && interrupt_input
- && (keyboard_bit_set (&Available)))
+ && keyboard_bit_set (&Available))
kill (getpid (), SIGIO);
#endif
@@ -2575,7 +2592,7 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
Causes "poll: interrupted system call" messages when Emacs is run
in an X window
Turn periodic alarms back on */
- start_polling();
+ start_polling ();
#endif
return got_some_input;