]> git.eshelyaron.com Git - emacs.git/commitdiff
(wait_reading_process_input): If select times out,
authorRichard M. Stallman <rms@gnu.org>
Thu, 1 Feb 1996 20:35:59 +0000 (20:35 +0000)
committerRichard M. Stallman <rms@gnu.org>
Thu, 1 Feb 1996 20:35:59 +0000 (20:35 +0000)
return only if we had no timers to shorten the wait.
Don't shorten the wait for timers if time_limit is -1.

src/process.c

index 59bcd8cb11d8ae0445894fd270ff1e6bc3e067ef..7af4115de6f28455024922123cb9e01e3ca190d5 100644 (file)
@@ -2026,6 +2026,8 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
 
   while (1)
     {
+      int timeout_reduced_for_timers = 0;
+
       /* If calling from keyboard input, do not quit
         since we want to return C-g as an input character.
         Otherwise, do pending quit if requested.  */
@@ -2064,13 +2066,17 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
         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 timer_delay;
+         timer_delay = timer_check (1);
+         if (! EMACS_TIME_NEG_P (timer_delay) && time_limit != -1)
            {
              EMACS_TIME difference;
              EMACS_SUB_TIME (difference, timer_delay, timeout);
              if (EMACS_TIME_NEG_P (difference))
-               timeout = timer_delay;
+               {
+                 timeout = timer_delay;
+                 timeout_reduced_for_timers = 1;
+               }
            }
        }
 
@@ -2149,7 +2155,8 @@ wait_reading_process_input (time_limit, microsecs, read_kbd, do_display)
       /*  If we woke up due to SIGWINCH, actually change size now.  */
       do_pending_window_change ();
 
-      if (time_limit && nfds == 0) /* timeout elapsed */
+      if (time_limit && nfds == 0 && ! timeout_reduced_for_timers)
+       /* We wanted the full specified time, so return now.  */
        break;
       if (nfds < 0)
        {