diff --git a/src/eloop.c b/src/eloop.c index 8532588..84468da 100644 --- a/src/eloop.c +++ b/src/eloop.c @@ -805,6 +805,19 @@ void ev_eloop_unref(struct ev_eloop *loop) free(loop); } +void ev_eloop_flush_fd(struct ev_eloop *loop, struct ev_fd *fd) +{ + int i; + + if (!loop || !fd) + return; + + for (i = 0; i < loop->cur_fds_cnt; ++i) { + if (loop->cur_fds[i].data.ptr == fd) + loop->cur_fds[i].data.ptr = NULL; + } +} + int ev_eloop_dispatch(struct ev_eloop *loop, int timeout) { struct epoll_event ep[32]; diff --git a/src/eloop.h b/src/eloop.h index 325134d..0eef7e1 100644 --- a/src/eloop.h +++ b/src/eloop.h @@ -62,6 +62,7 @@ int ev_eloop_new(struct ev_eloop **out); void ev_eloop_ref(struct ev_eloop *loop); void ev_eloop_unref(struct ev_eloop *loop); +void ev_eloop_flush_fd(struct ev_eloop *loop, struct ev_fd *fd); int ev_eloop_dispatch(struct ev_eloop *loop, int timeout); int ev_eloop_run(struct ev_eloop *loop, int timeout); void ev_eloop_exit(struct ev_eloop *loop);