# define EV_STAT_ENABLE 1
#endif
+#ifndef EV_IDLE_ENABLE
+# define EV_IDLE_ENABLE 1
+#endif
+
#ifndef EV_FORK_ENABLE
# define EV_FORK_ENABLE 1
#endif
} ev_stat;
#endif
+#if EV_IDLE_ENABLE
/* invoked when the nothing else needs to be done, keeps the process from blocking */
/* revent EV_IDLE */
typedef struct ev_idle
{
EV_WATCHER (ev_idle)
} ev_idle;
+#endif
/* invoked for each run of the mainloop, just before the blocking call */
/* you can still change events in any way you like */
#if EV_STAT_ENABLE
struct ev_stat stat;
#endif
+#if EV_IDLE_ENABLE
struct ev_idle idle;
+#endif
struct ev_prepare prepare;
struct ev_check check;
#if EV_FORK_ENABLE
void ev_default_fork (void);
unsigned int ev_backend (EV_P);
+unsigned int ev_loop_count (EV_P);
#endif
#define EVLOOP_NONBLOCK 1 /* do not block/wait */
/* these may evaluate ev multiple times, and the other arguments at most once */
/* either use ev_init + ev_TYPE_set, or the ev_TYPE_init macro, below, to first initialise a watcher */
-#define ev_init(ev,cb_) do { \
+#define ev_init(ev,cb_) do { \
((ev_watcher *)(void *)(ev))->active = \
((ev_watcher *)(void *)(ev))->pending = \
((ev_watcher *)(void *)(ev))->priority = 0; \
- ev_set_cb ((ev), cb_); \
+ ev_set_cb ((ev), cb_); \
} while (0)
#define ev_io_set(ev,fd_,events_) do { (ev)->fd = (fd_); (ev)->events = (events_); } while (0)
#define ev_is_pending(ev) (0 + ((ev_watcher *)(void *)(ev))->pending) /* ro, true when watcher is waiting for callback invocation */
#define ev_is_active(ev) (0 + ((ev_watcher *)(void *)(ev))->active) /* ro, true when the watcher has been started */
-#define ev_priority(ev) ((ev_watcher *)(void *)(ev))->priority /* rw */
+#define ev_priority(ev) ((((ev_watcher *)(void *)(ev))->priority) + 0)
#define ev_cb(ev) (ev)->cb /* rw */
-#define ev_set_priority(ev,pri) ev_priority (ev) = (pri)
+#define ev_set_priority(ev,pri) ((ev_watcher *)(void *)(ev))->priority = (pri)
#ifndef ev_set_cb
# define ev_set_cb(ev,cb_) ev_cb (ev) = (cb_)
void ev_feed_event (EV_P_ void *w, int revents);
void ev_feed_fd_event (EV_P_ int fd, int revents);
void ev_feed_signal_event (EV_P_ int signum);
+void ev_invoke (EV_P_ void *w, int revents);
+int ev_clear_pending (EV_P_ void *w);
void ev_io_start (EV_P_ ev_io *w);
void ev_io_stop (EV_P_ ev_io *w);
void ev_stat_stat (EV_P_ ev_stat *w);
# endif
+# if EV_IDLE_ENABLE
void ev_idle_start (EV_P_ ev_idle *w);
void ev_idle_stop (EV_P_ ev_idle *w);
+# endif
void ev_prepare_start (EV_P_ ev_prepare *w);
void ev_prepare_stop (EV_P_ ev_prepare *w);