diff options
Diffstat (limited to 'ev.h')
| -rw-r--r-- | ev.h | 24 | 
1 files changed, 18 insertions, 6 deletions
| @@ -189,11 +189,17 @@ struct ev_loop;   *           or the array index + 1 in the pendings array.   */ +#if EV_MINPRI == EV_MAXPRI +# define EV_DECL_PRIORITY +#else +# define EV_DECL_PRIORITY int priority; +#endif +  /* shared by all watchers */  #define EV_WATCHER(type)			\    int active; /* private */			\    int pending; /* private */			\ -  int priority; /* private */			\ +  EV_DECL_PRIORITY /* private */		\    EV_COMMON /* rw */				\    EV_CB_DECLARE (type) /* private */ @@ -548,9 +554,9 @@ void ev_once (EV_P_ int fd, int events, ev_tstamp timeout, void (*cb)(int revent  /* 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 {			\ -  ((ev_watcher *)(void *)(ev))->active   =	\ -  ((ev_watcher *)(void *)(ev))->pending  =	\ -  ((ev_watcher *)(void *)(ev))->priority = 0;	\ +  ((ev_watcher *)(void *)(ev))->active  =	\ +  ((ev_watcher *)(void *)(ev))->pending = 0;	\ +  ev_set_priority ((ev), 0);			\    ev_set_cb ((ev), cb_);			\  } while (0) @@ -583,9 +589,15 @@ void ev_once (EV_P_ int fd, int events, ev_tstamp timeout, void (*cb)(int revent  #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) + 0)  #define ev_cb(ev)                            (ev)->cb /* rw */ -#define ev_set_priority(ev,pri)              ((ev_watcher *)(void *)(ev))->priority = (pri) + +#if EV_MINPRI == EV_MAXPRI +# define ev_priority(ev)                     ((ev), EV_MINPRI) +# define ev_set_priority(ev,pri)             ((ev), (pri)) +#else +# define ev_priority(ev)                     ((((ev_watcher *)(void *)(ev))->priority) + 0) +# define ev_set_priority(ev,pri)             (  (ev_watcher *)(void *)(ev))->priority = (pri) +#endif  #define ev_periodic_at(ev)                   (((ev_watcher_time *)(ev))->at + 0.) | 
