--- cvsroot/EV-ADNS/ADNS.xs 2007/12/07 23:54:13 1.12 +++ cvsroot/EV-ADNS/ADNS.xs 2007/12/08 22:35:31 1.14 @@ -45,7 +45,7 @@ c = (struct ctx *)ctx; cb = c->cb; c->cb = 0; - ev_unref (); + ev_unref (EV_A); SvREFCNT_dec (c->self); PUSHMARK (SP); @@ -221,7 +221,7 @@ static void update_now (EV_P) { - ev_tstamp t = ev_now (); + ev_tstamp t = ev_now (EV_A); tv_now.tv_sec = (long)t; tv_now.tv_usec = (long)((t - (ev_tstamp)tv_now.tv_sec) * 1e6); @@ -237,7 +237,7 @@ timer_cb (EV_P_ ev_timer *w, int revents) { adns_state ads = (adns_state)w->data; - update_now (); + update_now (EV_A); adns_processtimeouts (ads, &tv_now); } @@ -262,7 +262,7 @@ if (ev_is_active (&tw)) { - ev_ref (); + ev_ref (EV_A); ev_timer_stop (EV_A_ &tw); } @@ -271,7 +271,7 @@ for (i = 0; i < nfd; ++i) { - ev_ref (); + ev_ref (EV_A); ev_io_stop (EV_A_ iow + i); } @@ -290,17 +290,20 @@ ev_timer_set (&tw, timeout * 1e-3, 0.); ev_timer_start (EV_A_ &tw); - ev_unref (); + ev_unref (EV_A); // create one ev_io per pollfd for (i = 0; i < nfd; ++i) { - ev_io_init (iow + i, io_cb, fds [i].fd, + ev_io *w = iow + i; + + ev_io_init (w, io_cb, fds [i].fd, ((fds [i].events & POLLIN ? EV_READ : 0) | (fds [i].events & POLLOUT ? EV_WRITE : 0))); - ev_io_start (EV_A_ iow + i); - ev_unref (); + w->data = (void *)ads; + ev_io_start (EV_A_ w); + ev_unref (EV_A); } } @@ -408,7 +411,7 @@ ev_prepare_init (&pw, prepare_cb); pw.data = (void *)ads; ev_prepare_start (EV_DEFAULT_ &pw); - ev_unref (); + ev_unref (EV_A); ev_init (&iw, idle_cb); ev_set_priority (&iw, EV_MINPRI); iw.data = (void *)ads; @@ -431,7 +434,7 @@ } else { - ev_ref (); + ev_ref (EV_A); SvPOK_only (csv); SvCUR_set (csv, sizeof (struct ctx)); @@ -465,7 +468,7 @@ if (c->cb) { - ev_unref (); + ev_unref (EV_A); SvREFCNT_dec (c->cb); c->cb = 0; adns_cancel (c->query);