summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerd Moellmann <gerd@gnu.org>2001-03-06 19:50:42 +0000
committerGerd Moellmann <gerd@gnu.org>2001-03-06 19:50:42 +0000
commit101922c35f634a376eacb2a0eaa091d3e6801bd7 (patch)
treebd2a5b60c269c091be9000dd8a23892a234a2362
parent45d051a764844c534ed823a116bf480224e4b36b (diff)
downloademacs-101922c35f634a376eacb2a0eaa091d3e6801bd7.tar.gz
(XTflash): Make the timeout of select shorter, and call
select repeatedly until the desired time expires.
-rw-r--r--src/ChangeLog5
-rw-r--r--src/xterm.c17
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 (&current, 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);
}