Modifying sys_read to not check the event queue if timeout=0 and to never
authorSteven Tamm <steventamm@mac.com>
Tue, 10 Dec 2002 18:03:49 +0000 (18:03 +0000)
committerSteven Tamm <steventamm@mac.com>
Tue, 10 Dec 2002 18:03:49 +0000 (18:03 +0000)
use a timeout larger than the one passed in.

src/mac.c

index bf1915c..e81007c 100644 (file)
--- a/src/mac.c
+++ b/src/mac.c
@@ -2769,7 +2769,9 @@ sys_select (n, rfds, wfds, efds, timeout)
 {
   if (!inhibit_window_system && rfds && FD_ISSET (0, rfds))
     return 1;
-  else if (inhibit_window_system || noninteractive)
+  else if (inhibit_window_system || noninteractive ||
+          (timeout && (EMACS_SECS(*timeout)==0) && 
+           (EMACS_USECS(*timeout)==0)))
     return select(n, rfds, wfds, efds, timeout);
   else
     {
@@ -2787,6 +2789,9 @@ sys_select (n, rfds, wfds, efds, timeout)
          EMACS_SET_SECS (one_second, 1);
          EMACS_SET_USECS (one_second, 0);
          
+         if (timeout && EMACS_TIME_LT(*timeout, one_second))
+           one_second = *timeout;
+
          if ((r = select (n, rfds, wfds, efds, &one_second)) > 0)
            return r;