diff options
-rw-r--r-- | Changes | 3 | ||||
-rw-r--r-- | ev++.h | 40 | ||||
-rw-r--r-- | ev.h | 2 | ||||
-rwxr-xr-x | import_libevent | 2 |
4 files changed, 37 insertions, 10 deletions
@@ -15,6 +15,9 @@ Revision history for libev, a high-performance and full-featured event loop. - work around a bug in realloc on openbsd and darwin, also makes the errornous valgrind complaints go away (noted by various people). + - fix ev_async_pending, add c++ wrapper for ev_async + (based on patch sent by Johannes Deisenhofer. + - add sensible set method to ev::embed. 3.2 Wed Apr 2 17:11:19 CEST 2008 - fix a 64 bit overflow issue in the select backend, @@ -72,6 +72,7 @@ namespace ev { CHECK = EV_CHECK, PREPARE = EV_PREPARE, FORK = EV_FORK, + ASYNC = EV_ASYNC, EMBED = EV_EMBED, ERROR = EV_ERROR, }; @@ -563,13 +564,13 @@ namespace ev { #if EV_MULTIPLICITY #define EV_CONSTRUCT(cppstem,cstem) \ - (EV_PX = get_default_loop ()) throw () \ + (EV_PX = get_default_loop ()) throw () \ : base<ev_ ## cstem, cppstem> (EV_A) \ { \ } #else #define EV_CONSTRUCT(cppstem,cstem) \ - () throw () \ + () throw () \ { \ } #endif @@ -580,19 +581,19 @@ namespace ev { \ struct cppstem : base<ev_ ## cstem, cppstem> \ { \ - void start () throw () \ + void start () throw () \ { \ ev_ ## cstem ## _start (EV_A_ static_cast<ev_ ## cstem *>(this)); \ } \ \ - void stop () throw () \ + void stop () throw () \ { \ ev_ ## cstem ## _stop (EV_A_ static_cast<ev_ ## cstem *>(this)); \ } \ \ cppstem EV_CONSTRUCT(cppstem,cstem) \ \ - ~cppstem () throw () \ + ~cppstem () throw () \ { \ stop (); \ } \ @@ -603,7 +604,7 @@ namespace ev { \ cppstem (const cppstem &o); \ \ - cppstem & operator =(const cppstem &o); \ + cppstem &operator =(const cppstem &o); \ \ public: @@ -748,10 +749,17 @@ namespace ev { #if EV_EMBED_ENABLE EV_BEGIN_WATCHER (embed, embed) - void start (struct ev_loop *embedded_loop) throw () + void set (struct ev_loop *embedded_loop) throw () { - stop (); + int active = is_active (); + if (active) stop (); ev_embed_set (static_cast<ev_embed *>(this), embedded_loop); + if (active) start (); + } + + void start (struct ev_loop *embedded_loop) throw () + { + set (embedded_loop); start (); } @@ -768,6 +776,22 @@ namespace ev { EV_END_WATCHER (fork, fork) #endif + #if EV_ASYNC_ENABLE + EV_BEGIN_WATCHER (async, async) + void set () throw () { } + + void send () throw () + { + ev_async_send (EV_A_ static_cast<ev_async *>(this)); + } + + bool async_pending () throw () + { + return ev_async_pending (static_cast<ev_async *>(this)); + } + EV_END_WATCHER (async, async) + #endif + #undef EV_PX #undef EV_PX_ #undef EV_CONSTRUCT @@ -338,7 +338,7 @@ typedef struct ev_async EV_ATOMIC_T sent; /* private */ } ev_async; -# define ev_async_pending(w) (((w)->sent + 0) +# define ev_async_pending(w) ((w)->sent + 0) #endif /* the presence of this union forces similar struct layout */ diff --git a/import_libevent b/import_libevent index 77919b0..80d6bc1 100755 --- a/import_libevent +++ b/import_libevent @@ -1,6 +1,6 @@ #!/bin/sh -LE=../libevent-1.4.2-rc +LE=../libevent-1.4.3-stable if ! [ -e evbuffer.c ]; then echo do not run this programm unless you know what you are doing |