Close signal file descriptor in event loop on remove and failure.
authorIskren Chernev <iskren.chernev@gmail.com>
Sun, 13 Mar 2011 19:08:37 +0000 (21:08 +0200)
committerIskren Chernev <iskren.chernev@gmail.com>
Mon, 14 Mar 2011 09:56:43 +0000 (11:56 +0200)
When the signal handler is removed the corresponding fd is closed. This
should automatically remove it from the epoll set.

wayland/event-loop.c

index afdb1d8..8708571 100644 (file)
@@ -265,13 +265,10 @@ wl_event_source_signal_remove(struct wl_event_source *source)
 {
        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 = {
@@ -315,6 +312,7 @@ wl_event_loop_add_signal(struct wl_event_loop *loop,
        ep.data.ptr = source;
 
        if (epoll_ctl(loop->epoll_fd, EPOLL_CTL_ADD, source->fd, &ep) < 0) {
+               close(source->fd);
                free(source);
                return NULL;
        }