X-Git-Url: https://git.llucax.com/software/libev.git/blobdiff_plain/fa5f32e568e5e1f7bcb548b108379c434d253731..0b4c472152d0c1274572fa5fb7223b7bbf4dfe54:/ev.c diff --git a/ev.c b/ev.c index 8c3bf01..3a177c5 100644 --- a/ev.c +++ b/ev.c @@ -115,8 +115,7 @@ get_clock (void) return ev_time (); } -#define array_nextsize(n) (((n) << 1) | 4 & ~3) -#define array_prevsize(n) (((n) >> 1) | 4 & ~3) +#define array_roundsize(base,n) ((n) | 4 & ~3) #define array_needsize(base,cur,cnt,init) \ if ((cnt) > cur) \ @@ -124,7 +123,7 @@ get_clock (void) int newcnt = cur; \ do \ { \ - newcnt = array_nextsize (newcnt); \ + newcnt = array_roundsize (base, newcnt << 1); \ } \ while ((cnt) > newcnt); \ \ @@ -167,13 +166,10 @@ static int pendingmax, pendingcnt; static void event (W w, int events) { - if (w->active) - { - w->pending = ++pendingcnt; - array_needsize (pendings, pendingmax, pendingcnt, ); - pendings [pendingcnt - 1].w = w; - pendings [pendingcnt - 1].events = events; - } + w->pending = ++pendingcnt; + array_needsize (pendings, pendingmax, pendingcnt, ); + pendings [pendingcnt - 1].w = w; + pendings [pendingcnt - 1].events = events; } static void @@ -531,8 +527,6 @@ timers_reify (void) { struct ev_timer *w = timers [0]; - event ((W)w, EV_TIMEOUT); - /* first reschedule or stop timer */ if (w->repeat) { @@ -542,6 +536,8 @@ timers_reify (void) } else ev_timer_stop (w); /* nonrepeating: stop timer */ + + event ((W)w, EV_TIMEOUT); } }