|
|
|
@ -1544,9 +1544,7 @@ static int loop_done;
|
|
|
|
|
void
|
|
|
|
|
ev_loop (EV_P_ int flags)
|
|
|
|
|
{
|
|
|
|
|
loop_done = flags & (EVLOOP_ONESHOT | EVLOOP_NONBLOCK)
|
|
|
|
|
? EVUNLOOP_ONE
|
|
|
|
|
: EVUNLOOP_CANCEL;
|
|
|
|
|
loop_done = EVUNLOOP_CANCEL;
|
|
|
|
|
|
|
|
|
|
call_pending (EV_A); /* in case we recurse, ensure ordering stays nice and clean */
|
|
|
|
|
|
|
|
|
@ -1652,9 +1650,12 @@ ev_loop (EV_P_ int flags)
|
|
|
|
|
queue_events (EV_A_ (W *)checks, checkcnt, EV_CHECK);
|
|
|
|
|
|
|
|
|
|
call_pending (EV_A);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
while (expect_true (activecnt && !loop_done));
|
|
|
|
|
while (expect_true (
|
|
|
|
|
activecnt
|
|
|
|
|
&& !loop_done
|
|
|
|
|
&& !(flags & (EVLOOP_ONESHOT | EVLOOP_NONBLOCK))
|
|
|
|
|
));
|
|
|
|
|
|
|
|
|
|
if (loop_done == EVUNLOOP_ONE)
|
|
|
|
|
loop_done = EVUNLOOP_CANCEL;
|
|
|
|
|