Browse Source

*** empty log message ***

master
Marc Alexander Lehmann 14 years ago
parent
commit
aa1823e4dc
  1. 17
      ev.c
  2. 10
      ev.h

17
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);
}

10
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

Loading…
Cancel
Save