]> git.llucax.com Git - software/libev.git/commitdiff
*** empty log message ***
authorroot <root>
Thu, 20 Dec 2007 10:12:22 +0000 (10:12 +0000)
committerroot <root>
Thu, 20 Dec 2007 10:12:22 +0000 (10:12 +0000)
ev.c
ev.h

diff --git a/ev.c b/ev.c
index 32369d3de5e24a995a6a905fdfcbd0a4ec402375..2f46f79ba9567441c8112c087997daee11361155 100644 (file)
--- a/ev.c
+++ b/ev.c
@@ -2188,7 +2188,7 @@ ev_embed_sweep (EV_P_ ev_embed *w)
 }
 
 static void
-embed_cb (EV_P_ ev_io *io, int revents)
+embed_io_cb (EV_P_ ev_io *io, int revents)
 {
   ev_embed *w = (ev_embed *)(((char *)io) - offsetof (ev_embed, io));
 
@@ -2198,6 +2198,14 @@ embed_cb (EV_P_ ev_io *io, int revents)
     ev_embed_sweep (loop, w);
 }
 
+static void
+embed_prepare_cb (EV_P_ ev_prepare *prepare, int revents)
+{
+  ev_embed *w = (ev_embed *)(((char *)prepare) - offsetof (ev_embed, prepare));
+
+  fd_reify (w->other);
+}
+
 void
 ev_embed_start (EV_P_ ev_embed *w)
 {
@@ -2207,12 +2215,16 @@ ev_embed_start (EV_P_ ev_embed *w)
   {
     struct ev_loop *loop = w->other;
     assert (("loop to be embedded is not embeddable", backend & ev_embeddable_backends ()));
-    ev_io_init (&w->io, embed_cb, backend_fd, EV_READ);
+    ev_io_init (&w->io, embed_io_cb, backend_fd, EV_READ);
   }
 
   ev_set_priority (&w->io, ev_priority (w));
   ev_io_start (EV_A_ &w->io);
 
+  ev_prepare_init (&w->prepare, embed_prepare_cb);
+  ev_set_priority (&w->prepare, EV_MINPRI);
+  ev_prepare_start (EV_A_ &w->prepare);
+
   ev_start (EV_A_ (W)w, 1);
 }
 
@@ -2224,6 +2236,7 @@ ev_embed_stop (EV_P_ ev_embed *w)
     return;
 
   ev_io_stop (EV_A_ &w->io);
+  ev_prepare_stop (EV_A_ &w->prepare);
 
   ev_stop (EV_A_ (W)w);
 }
diff --git a/ev.h b/ev.h
index fc374cb2a0b16726c37e9cbfa7aa28058bcd13d2..2b59019887afa7505814fe7bb33a8a263d19a916 100644 (file)
--- a/ev.h
+++ b/ev.h
@@ -120,7 +120,7 @@ struct ev_loop;
 # define EV_PROTOTYPES 1
 #endif
 
-#define EV_VERSION_MAJOR 1
+#define EV_VERSION_MAJOR 2
 #define EV_VERSION_MINOR 0
 
 #ifndef EV_CB_DECLARE
@@ -285,8 +285,14 @@ typedef struct ev_embed
 {
   EV_WATCHER (ev_embed)
 
-  ev_io io; /* private */
   struct ev_loop *other; /* ro */
+  ev_io io;              /* private */
+  ev_prepare prepare;    /* private */
+  ev_check check;        /* unused */
+  ev_timer timer;        /* unused */
+  ev_periodic periodic;  /* unused */
+  ev_idle idle;          /* unused */
+  ev_fork fork;          /* unused */
 } ev_embed;
 #endif