|
|
|
@ -2764,15 +2764,21 @@ ev_pending_count (EV_P) EV_THROW
|
|
|
|
|
void noinline
|
|
|
|
|
ev_invoke_pending (EV_P)
|
|
|
|
|
{
|
|
|
|
|
for (pendingpri = NUMPRI; pendingpri--; ) /* pendingpri is modified during the loop */
|
|
|
|
|
while (pendingcnt [pendingpri])
|
|
|
|
|
{
|
|
|
|
|
ANPENDING *p = pendings [pendingpri] + --pendingcnt [pendingpri];
|
|
|
|
|
pendingpri = NUMPRI;
|
|
|
|
|
|
|
|
|
|
p->w->pending = 0;
|
|
|
|
|
EV_CB_INVOKE (p->w, p->events);
|
|
|
|
|
EV_FREQUENT_CHECK;
|
|
|
|
|
}
|
|
|
|
|
while (pendingpri) /* pendingpri possibly gets modified in the inner loop */
|
|
|
|
|
{
|
|
|
|
|
--pendingpri;
|
|
|
|
|
|
|
|
|
|
while (pendingcnt [pendingpri])
|
|
|
|
|
{
|
|
|
|
|
ANPENDING *p = pendings [pendingpri] + --pendingcnt [pendingpri];
|
|
|
|
|
|
|
|
|
|
p->w->pending = 0;
|
|
|
|
|
EV_CB_INVOKE (p->w, p->events);
|
|
|
|
|
EV_FREQUENT_CHECK;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if EV_IDLE_ENABLE
|
|
|
|
@ -3180,10 +3186,6 @@ ev_run (EV_P_ int flags)
|
|
|
|
|
if (loop_done == EVBREAK_ONE)
|
|
|
|
|
loop_done = EVBREAK_CANCEL;
|
|
|
|
|
|
|
|
|
|
/* pendingpri is normally -1 here, which is not a good */
|
|
|
|
|
/* value when returning to an ev_invoke_pending */
|
|
|
|
|
pendingpri = NUMPRI - 1;
|
|
|
|
|
|
|
|
|
|
#if EV_FEATURE_API
|
|
|
|
|
--loop_depth;
|
|
|
|
|
#endif
|
|
|
|
|