--- EV/EV.xs 2007/10/26 16:51:27 1.2 +++ EV/EV.xs 2007/10/26 17:24:18 1.3 @@ -58,19 +58,16 @@ static int sv_fileno (SV *fh) { - if (fh) - { - SvGETMAGIC (fh); + SvGETMAGIC (fh); - if (SvROK (fh)) - fh = SvRV (fh); + if (SvROK (fh)) + fh = SvRV (fh); - if (SvTYPE (fh) == SVt_PVGV) - return PerlIO_fileno (IoIFP (sv_2io (fh))); + if (SvTYPE (fh) == SVt_PVGV) + return PerlIO_fileno (IoIFP (sv_2io (fh))); - if (SvIOK (fh)) - return SvIV (fh); - } + if (SvIOK (fh)) + return SvIV (fh); return -1; } @@ -285,7 +282,7 @@ int event_loop (int flags = 0) -int event_loopexit (double after) +int event_loopexit (double after = 0) CODE: { struct timeval tv; @@ -295,7 +292,7 @@ Event event (SV *cb) CODE: - RETVAL = e_new (0, 0, cb); + RETVAL = e_new (NEWSV (0, 0), 0, cb); OUTPUT: RETVAL @@ -312,7 +309,7 @@ ALIAS: timer_ns = 1 CODE: - RETVAL = e_new (0, 0, cb); + RETVAL = e_new (NEWSV (0, 0), 0, cb); RETVAL->timeout = after; RETVAL->interval = repeat; if (!ix) e_start (RETVAL); @@ -323,7 +320,7 @@ ALIAS: timer_abs_ns = 1 CODE: - RETVAL = e_new (0, 0, cb); + RETVAL = e_new (NEWSV (0, 0), 0, cb); RETVAL->timeout = at; RETVAL->interval = interval; RETVAL->abstime = 1; @@ -407,9 +404,13 @@ SvREFCNT_dec (ev->cb); SvREFCNT_dec (ev->fh); -void cb (Event ev, SV *new_cb) +SV *cb (Event ev, SV *new_cb = 0) CODE: - sv_setsv (ev->cb, new_cb); + RETVAL = newSVsv (ev->cb); + if (items > 1) + sv_setsv (ev->cb, new_cb); + OUTPUT: + RETVAL SV *fh (Event ev, SV *new_fh = 0) ALIAS: