if ((cnt) > cur) \
{ \
int newcnt = cur ? cur << 1 : 16; \
- fprintf (stderr, "resize(" # base ") from %d to %d\n", cur, newcnt);\
base = realloc (base, sizeof (*base) * (newcnt)); \
init (base + cur, newcnt - cur); \
cur = newcnt; \
if (timercnt)
{
- ev_tstamp to = timers [0]->at - get_clock () + method_fudge;
+ ev_tstamp to = timers [0]->at - (have_monotonic ? get_clock () : ev_now) + method_fudge;
if (block > to) block = to;
}
downheap ((WT *)timers, timercnt, w->active - 1);
}
+ w->at = w->repeat;
+
ev_stop ((W)w);
}
+void
+evtimer_again (struct ev_timer *w)
+{
+ if (ev_is_active (w))
+ {
+ if (w->repeat)
+ {
+ w->at = now + w->repeat;
+ downheap ((WT *)timers, timercnt, w->active - 1);
+ }
+ else
+ evtimer_stop (w);
+ }
+ else if (w->repeat)
+ evtimer_start (w);
+}
+
void
evperiodic_start (struct ev_periodic *w)
{