ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.xs
(Generate patch)

Comparing EV/EV.xs (file contents):
Revision 1.113 by root, Thu May 22 02:44:57 2008 UTC vs.
Revision 1.114 by root, Sat Jul 12 22:19:22 2008 UTC

143} 143}
144 144
145static void * 145static void *
146e_new (int size, SV *cb_sv, SV *loop) 146e_new (int size, SV *cb_sv, SV *loop)
147{ 147{
148 SV *cv = e_get_cv (cb_sv); 148 SV *cv = cb_sv ? e_get_cv (cb_sv) : 0;
149 ev_watcher *w; 149 ev_watcher *w;
150 SV *self = NEWSV (0, size); 150 SV *self = NEWSV (0, size);
151 SvPOK_only (self); 151 SvPOK_only (self);
152 SvCUR_set (self, size); 152 SvCUR_set (self, size);
153 153
154 w = (ev_watcher *)SvPVX (self); 154 w = (ev_watcher *)SvPVX (self);
155 155
156 ev_init (w, e_cb); 156 ev_init (w, cv ? e_cb : 0);
157 157
158 w->loop = SvREFCNT_inc (SvRV (loop)); 158 w->loop = SvREFCNT_inc (SvRV (loop));
159 w->e_flags = WFLAG_KEEPALIVE; 159 w->e_flags = WFLAG_KEEPALIVE;
160 w->data = 0; 160 w->data = 0;
161 w->fh = 0; 161 w->fh = 0;
642 ev_stat_set (RETVAL, SvPVbyte_nolen (RETVAL->fh), interval); 642 ev_stat_set (RETVAL, SvPVbyte_nolen (RETVAL->fh), interval);
643 if (!ix) START (stat, RETVAL); 643 if (!ix) START (stat, RETVAL);
644 OUTPUT: 644 OUTPUT:
645 RETVAL 645 RETVAL
646 646
647ev_embed *embed (struct ev_loop *loop, SV *cb = &PL_sv_undef) 647ev_embed *embed (struct ev_loop *loop, SV *cb = 0)
648 ALIAS: 648 ALIAS:
649 embed_ns = 1 649 embed_ns = 1
650 CODE: 650 CODE:
651{ 651{
652 if (!(ev_backend (loop) & ev_embeddable_backends ())) 652 if (!(ev_backend (loop) & ev_embeddable_backends ()))
653 croak ("passed loop is not embeddable via EV::embed,"); 653 croak ("passed loop is not embeddable via EV::embed,");
654 654
655 RETVAL = e_new (sizeof (ev_embed), cb, default_loop_sv); 655 RETVAL = e_new (sizeof (ev_embed), cb, default_loop_sv);
656 RETVAL->fh = newSVsv (ST (0)); 656 RETVAL->fh = newSVsv (ST (0));
657 ev_embed_set (RETVAL, loop); 657 ev_embed_set (RETVAL, loop);
658
659 if (!SvOK (cb)) ev_set_cb (RETVAL, 0);
660
661 if (!ix) START (embed, RETVAL); 658 if (!ix) START (embed, RETVAL);
662} 659}
663 OUTPUT: 660 OUTPUT:
664 RETVAL 661 RETVAL
665 662
1364 ev_stat_set (RETVAL, SvPVbyte_nolen (RETVAL->fh), interval); 1361 ev_stat_set (RETVAL, SvPVbyte_nolen (RETVAL->fh), interval);
1365 if (!ix) START (stat, RETVAL); 1362 if (!ix) START (stat, RETVAL);
1366 OUTPUT: 1363 OUTPUT:
1367 RETVAL 1364 RETVAL
1368 1365
1369ev_embed *embed (struct ev_loop *loop, struct ev_loop *other, SV *cb = &PL_sv_undef) 1366ev_embed *embed (struct ev_loop *loop, struct ev_loop *other, SV *cb = 0)
1370 ALIAS: 1367 ALIAS:
1371 embed_ns = 1 1368 embed_ns = 1
1372 CODE: 1369 CODE:
1373{ 1370{
1374 if (!(ev_backend (other) & ev_embeddable_backends ())) 1371 if (!(ev_backend (other) & ev_embeddable_backends ()))
1375 croak ("passed loop is not embeddable via EV::embed,"); 1372 croak ("passed loop is not embeddable via EV::embed,");
1376 1373
1377 RETVAL = e_new (sizeof (ev_embed), cb, ST (0)); 1374 RETVAL = e_new (sizeof (ev_embed), cb, ST (0));
1378 RETVAL->fh = newSVsv (ST (1)); 1375 RETVAL->fh = newSVsv (ST (1));
1379 ev_embed_set (RETVAL, other); 1376 ev_embed_set (RETVAL, other);
1380
1381 if (!SvOK (cb)) ev_set_cb (RETVAL, 0);
1382
1383 if (!ix) START (embed, RETVAL); 1377 if (!ix) START (embed, RETVAL);
1384} 1378}
1385 OUTPUT: 1379 OUTPUT:
1386 RETVAL 1380 RETVAL
1387 1381

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines