When the signal handler is removed the corresponding fd is closed. This
should automatically remove it from the epoll set.
{
struct wl_event_source_signal *signal_source =
(struct wl_event_source_signal *) source;
- struct wl_event_loop *loop = source->loop;
- int fd;
- fd = signal_source->fd;
+ close(signal_source->fd);
free(source);
-
- return epoll_ctl(loop->epoll_fd, EPOLL_CTL_DEL, fd, NULL);
+ return 0;
}
struct wl_event_source_interface signal_source_interface = {
ep.data.ptr = source;
if (epoll_ctl(loop->epoll_fd, EPOLL_CTL_ADD, source->fd, &ep) < 0) {
+ close(source->fd);
free(source);
return NULL;
}