ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.c
(Generate patch)

Comparing libev/ev.c (file contents):
Revision 1.194 by root, Sat Dec 22 07:03:31 2007 UTC vs.
Revision 1.197 by root, Sat Dec 22 15:20:13 2007 UTC

972} 972}
973 973
974unsigned int 974unsigned int
975ev_embeddable_backends (void) 975ev_embeddable_backends (void)
976{ 976{
977 int flags = EVBACKEND_EPOLL | EVBACKEND_KQUEUE | EVBACKEND_PORT;
978
977 /* epoll embeddability broken on all linux versions up to at least 2.6.23 */ 979 /* epoll embeddability broken on all linux versions up to at least 2.6.23 */
978 return EVBACKEND_KQUEUE 980 /* please fix it and tell me how to detect the fix */
979 | EVBACKEND_PORT; 981 flags &= ~EVBACKEND_EPOLL;
982
983 return flags;
980} 984}
981 985
982unsigned int 986unsigned int
983ev_backend (EV_P) 987ev_backend (EV_P)
984{ 988{
2266 ev_embed *w = (ev_embed *)(((char *)io) - offsetof (ev_embed, io)); 2270 ev_embed *w = (ev_embed *)(((char *)io) - offsetof (ev_embed, io));
2267 2271
2268 if (ev_cb (w)) 2272 if (ev_cb (w))
2269 ev_feed_event (EV_A_ (W)w, EV_EMBED); 2273 ev_feed_event (EV_A_ (W)w, EV_EMBED);
2270 else 2274 else
2271 ev_embed_sweep (loop, w); 2275 ev_loop (w->other, EVLOOP_NONBLOCK);
2272} 2276}
2273 2277
2274static void 2278static void
2275embed_prepare_cb (EV_P_ ev_prepare *prepare, int revents) 2279embed_prepare_cb (EV_P_ ev_prepare *prepare, int revents)
2276{ 2280{
2277 ev_embed *w = (ev_embed *)(((char *)prepare) - offsetof (ev_embed, prepare)); 2281 ev_embed *w = (ev_embed *)(((char *)prepare) - offsetof (ev_embed, prepare));
2278 2282
2279 fd_reify (w->other); 2283 {
2284 struct ev_loop *loop = w->other;
2285
2286 while (fdchangecnt)
2287 {
2288 fd_reify (EV_A);
2289 ev_loop (EV_A_ EVLOOP_NONBLOCK);
2290 }
2291 }
2280} 2292}
2293
2294#if 0
2295static void
2296embed_idle_cb (EV_P_ ev_idle *idle, int revents)
2297{
2298 ev_idle_stop (EV_A_ idle);
2299}
2300#endif
2281 2301
2282void 2302void
2283ev_embed_start (EV_P_ ev_embed *w) 2303ev_embed_start (EV_P_ ev_embed *w)
2284{ 2304{
2285 if (expect_false (ev_is_active (w))) 2305 if (expect_false (ev_is_active (w)))
2296 2316
2297 ev_prepare_init (&w->prepare, embed_prepare_cb); 2317 ev_prepare_init (&w->prepare, embed_prepare_cb);
2298 ev_set_priority (&w->prepare, EV_MINPRI); 2318 ev_set_priority (&w->prepare, EV_MINPRI);
2299 ev_prepare_start (EV_A_ &w->prepare); 2319 ev_prepare_start (EV_A_ &w->prepare);
2300 2320
2321 /*ev_idle_init (&w->idle, e,bed_idle_cb);*/
2322
2301 ev_start (EV_A_ (W)w, 1); 2323 ev_start (EV_A_ (W)w, 1);
2302} 2324}
2303 2325
2304void 2326void
2305ev_embed_stop (EV_P_ ev_embed *w) 2327ev_embed_stop (EV_P_ ev_embed *w)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines