diff options
author | Gerd Moellmann <gerd@gnu.org> | 2001-03-06 19:50:42 +0000 |
---|---|---|
committer | Gerd Moellmann <gerd@gnu.org> | 2001-03-06 19:50:42 +0000 |
commit | 101922c35f634a376eacb2a0eaa091d3e6801bd7 (patch) | |
tree | bd2a5b60c269c091be9000dd8a23892a234a2362 | |
parent | 45d051a764844c534ed823a116bf480224e4b36b (diff) | |
download | emacs-101922c35f634a376eacb2a0eaa091d3e6801bd7.tar.gz |
(XTflash): Make the timeout of select shorter, and call
select repeatedly until the desired time expires.
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/xterm.c | 17 |
2 files changed, 16 insertions, 6 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index ce32656822a..bb6859cf6a5 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2001-03-06 Kenichi Handa <handa@etl.go.jp> + + * xterm.c (XTflash): Make the timeout of select shorter, and call + select repeatedly until the desired time expires. + 2001-03-06 Gerd Moellmann <gerd@gnu.org> * w32fns.c (Fx_create_frame): Clear Vwindow_list. diff --git a/src/xterm.c b/src/xterm.c index fc09897de01..ae786d5058b 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -5437,18 +5437,23 @@ XTflash (f) wakeup.tv_sec += (wakeup.tv_usec / 1000000); wakeup.tv_usec %= 1000000; - /* Keep waiting until past the time wakeup. */ - while (1) + /* Keep waiting until past the time wakeup or any input gets + available. */ + while (! detect_input_pending ()) { + struct timeval current; struct timeval timeout; - EMACS_GET_TIME (timeout); + EMACS_GET_TIME (current); - /* In effect, timeout = wakeup - timeout. - Break if result would be negative. */ - if (timeval_subtract (&timeout, wakeup, timeout)) + /* Break if result would be negative. */ + if (timeval_subtract (¤t, wakeup, current)) break; + /* How long `select' should wait. */ + timeout.tv_sec = 0; + timeout.tv_usec = 10000; + /* Try to wait that long--but we might wake up sooner. */ select (0, NULL, NULL, NULL, &timeout); } |