speed up event emulation

master
Marc Alexander Lehmann 16 years ago
parent 0f7a9e7278
commit 47bd6ce5e2

@ -209,31 +209,36 @@ int event_add (struct event *ev, struct timeval *tv)
{
dLOOPev;
/* disable all watchers */
event_del (ev);
if (ev->ev_events & EV_SIGNAL)
{
ev_signal_set (&ev->iosig.sig, ev->ev_fd);
ev_signal_start (EV_A_ &ev->iosig.sig);
if (!ev_is_active (&ev->iosig.sig))
{
ev_signal_set (&ev->iosig.sig, ev->ev_fd);
ev_signal_start (EV_A_ &ev->iosig.sig);
ev->ev_flags |= EVLIST_SIGNAL;
ev->ev_flags |= EVLIST_SIGNAL;
}
}
else if (ev->ev_events & (EV_READ | EV_WRITE))
{
ev_io_set (&ev->iosig.io, ev->ev_fd, ev->ev_events & (EV_READ | EV_WRITE));
ev_io_start (EV_A_ &ev->iosig.io);
if (!ev_is_active (&ev->iosig.io))
{
ev_io_set (&ev->iosig.io, ev->ev_fd, ev->ev_events & (EV_READ | EV_WRITE));
ev_io_start (EV_A_ &ev->iosig.io);
ev->ev_flags |= EVLIST_INSERTED;
ev->ev_flags |= EVLIST_INSERTED;
}
}
if (tv)
{
ev_timer_set (&ev->to, tv_get (tv), 0.);
ev_timer_start (EV_A_ &ev->to);
ev->to.repeat = tv_get (tv);
ev_timer_again (EV_A_ &ev->to);
ev->ev_flags |= EVLIST_TIMEOUT;
}
else
if (ev_is_active (&ev->to))
ev_timer_stop (EV_A_ &ev->to);
ev->ev_flags |= EVLIST_ACTIVE;

Loading…
Cancel
Save