If the main event queue is not empty, call select() with zero timeout, so

that the events are ran again after the FD's are checked. This allows us
to schedule I/O checks between processing of user commands.
This commit is contained in:
Martin Mares 1999-11-17 12:04:24 +00:00
parent 84a7d7f77c
commit 30770df2ab

View file

@ -894,7 +894,7 @@ io_loop(void)
fd_set rd, wr; fd_set rd, wr;
struct timeval timo; struct timeval timo;
time_t tout; time_t tout;
int hi; int hi, events;
sock *s; sock *s;
node *n, *p; node *n, *p;
@ -904,7 +904,7 @@ io_loop(void)
FD_ZERO(&wr); FD_ZERO(&wr);
for(;;) for(;;)
{ {
ev_run_list(&global_event_list); events = ev_run_list(&global_event_list);
now = time(NULL); now = time(NULL);
tout = tm_first_shot(); tout = tm_first_shot();
if (tout <= now) if (tout <= now)
@ -912,11 +912,8 @@ io_loop(void)
tm_shot(); tm_shot();
continue; continue;
} }
else timo.tv_sec = events ? 0 : tout - now;
{ timo.tv_usec = 0;
timo.tv_sec = tout - now;
timo.tv_usec = 0;
}
hi = 0; hi = 0;
WALK_LIST(n, sock_list) WALK_LIST(n, sock_list)