summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changes3
-rw-r--r--ev++.h40
-rw-r--r--ev.h2
-rwxr-xr-ximport_libevent2
4 files changed, 37 insertions, 10 deletions
diff --git a/Changes b/Changes
index 93fcfb0..2a3927a 100644
--- a/Changes
+++ b/Changes
@@ -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,
diff --git a/ev++.h b/ev++.h
index d1dc21a..a5ef402 100644
--- a/ev++.h
+++ b/ev++.h
@@ -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
diff --git a/ev.h b/ev.h
index 74fb059..ebedcbf 100644
--- a/ev.h
+++ b/ev.h
@@ -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