From 101922c35f634a376eacb2a0eaa091d3e6801bd7 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Tue, 6 Mar 2001 19:50:42 +0000 Subject: [PATCH] (XTflash): Make the timeout of select shorter, and call select repeatedly until the desired time expires. --- src/ChangeLog | 5 +++++ 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 + + * xterm.c (XTflash): Make the timeout of select shorter, and call + select repeatedly until the desired time expires. + 2001-03-06 Gerd Moellmann * 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); } -- 2.39.5