ev_io_set (&sigev, sigpipe [0], EV_READ);
ev_io_start (&sigev);
+ ev_unref (EV_A); /* child watcher should not keep loop alive */
}
/*****************************************************************************/
ev_signal_init (&childev, childcb, SIGCHLD);
ev_set_priority (&childev, EV_MAXPRI);
ev_signal_start (EV_A_ &childev);
+ ev_unref (EV_A); /* child watcher should not keep loop alive */
#endif
}
}
queue_events (EV_A_ (W *)checks, checkcnt, EV_CHECK);
call_pending (EV_A);
- printf ("activecnt %d\n", activecnt);//D
}
while (activecnt && !loop_done);
# define EV_MAXPRI +2
#endif
-#define EV_P void
-#define EV_P_
-#define EV_A
-#define EV_A_
+/* support multiple event loops? */
+#ifdef EV_MULTIPLICITY
+struct ev_loop;
+# define EV_P struct ev_loop *loop
+# define EV_P_ EV_P,
+# define EV_A loop
+# define EV_A_ EV_A,
+#else
+# define EV_P void
+# define EV_P_
+# define EV_A
+# define EV_A_
+
+#endif
/* eventmask, revents, events... */
#define EV_UNDEF -1 /* guaranteed to be invalid */
#include "event.h"
-#define dLOOPev
-#define dLOOPbase
+#ifdef EV_MULTIPLICITY
+# define dLOOPev struct ev_loop *loop = ev->ev_base->loop
+# define dLOOPbase struct ev_loop *loop = base->loop
+#else
+# define dLOOPev
+# define dLOOPbase
+#endif
struct event_base
{
+#ifdef EV_MULTIPLICITY
+ struct ev_loop *loop;
+#endif
int dummy;
};
void event_base_free (struct event_base *base)
{
+ dLOOPbase;
+
/* nop */
}
int event_base_loop (struct event_base *base, int flags)
{
dLOOPbase;
- ev_loop (EV_A_ flags | EVLOOP_ONESHOT);
+
+ ev_loop (EV_A_ flags);
return 0;
}