]> granicus.if.org Git - libevent/commitdiff
Allow base-notification functions to exist without setting an fd
authorNick Mathewson <nickm@torproject.org>
Sat, 28 May 2011 02:54:16 +0000 (22:54 -0400)
committerNick Mathewson <nickm@torproject.org>
Sat, 28 May 2011 02:54:16 +0000 (22:54 -0400)
The kqueue and evport backends can make good use of this.

event.c

diff --git a/event.c b/event.c
index 366d867deb6b0d130b56927599d6a7abed7dab69..bd7234c477511e47629207a1bb8472caff9bce36 100644 (file)
--- a/event.c
+++ b/event.c
@@ -825,6 +825,7 @@ event_reinit(struct event_base *base)
                base->th_notify_fd[0] = -1;
                base->th_notify_fd[1] = -1;
                event_debug_unassign(&base->th_notify);
+               base->th_notify_fn = NULL;
        }
 
        if (base->evsel->dealloc != NULL)
@@ -2696,8 +2697,10 @@ evthread_make_base_notifiable(struct event_base *base)
        if (!base)
                return -1;
 
-       if (base->th_notify_fd[0] >= 0)
+       if (base->th_notify_fn != NULL) {
+               /* The base is already notifiable: we're doing fine. */
                return 0;
+       }
 
 #if defined(_EVENT_HAVE_EVENTFD) && defined(_EVENT_HAVE_SYS_EVENTFD_H)
 #ifndef EFD_CLOEXEC