diff options
Diffstat (limited to 'minui')
-rw-r--r-- | minui/events.cpp | 17 | ||||
-rw-r--r-- | minui/minui.h | 1 |
2 files changed, 18 insertions, 0 deletions
diff --git a/minui/events.cpp b/minui/events.cpp index 3b2262a..4e9d80b 100644 --- a/minui/events.cpp +++ b/minui/events.cpp @@ -137,6 +137,23 @@ int ev_add_fd(int fd, ev_callback cb, void* data) { return ret; } +int ev_del_fd(int fd) +{ + unsigned n; + for (n = 0; n < ev_count; ++n) { + if (ev_fdinfo[n].fd == fd) { + epoll_ctl(g_epoll_fd, EPOLL_CTL_DEL, fd, NULL); + if (n != ev_count-1) { + ev_fdinfo[n] = ev_fdinfo[ev_count-1]; + } + ev_count--; + ev_misc_count--; + return 0; + } + } + return -1; +} + void ev_exit(void) { while (ev_count > 0) { close(ev_fdinfo[--ev_count].fd); diff --git a/minui/minui.h b/minui/minui.h index d714632..7dec2d7 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -67,6 +67,7 @@ typedef int (*ev_set_key_callback)(int code, int value, void* data); int ev_init(ev_callback input_cb, void* data); void ev_exit(); int ev_add_fd(int fd, ev_callback cb, void* data); +int ev_del_fd(int fd); void ev_iterate_available_keys(std::function<void(int)> f); int ev_sync_key_state(ev_set_key_callback set_key_cb, void* data); |