]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/eventclient/serv_eventclient.c
libev migration - shutdown cleanly.
[citadel.git] / citadel / modules / eventclient / serv_eventclient.c
index 29fb5bb517b70f2f122ed7ac4c91778f3d37ebe4..d135dccf6c4547f668aef00778ab0e1fa25a9077 100644 (file)
@@ -107,7 +107,8 @@ static void QueueEventAddCallback(struct ev_loop *loop, ev_io *watcher, int reve
                /////event_del(&queue_add_event);
                close(event_add_pipe[0]);
 /// TODO; flush QueueEvents fd's and delete it.
-               ev_io_stop(event_base, NULL);
+               ev_io_stop(event_base, &queue_add_event);
+               ev_unloop(event_base, EVUNLOOP_ALL);
        }
        /* Unblock the other side */
 //     read(fd, buf, 1);
@@ -119,7 +120,7 @@ void InitEventQueue(void)
 {
        struct rlimit LimitSet;
 
-       event_base = ev_default_loop(0);
+///    event_base = ev_default_loop(0);
 /*
        base = event_base_new();
        if (!base)
@@ -161,13 +162,18 @@ void *client_event_thread(void *arg)
        
        event_add(&queue_add_event, NULL);
 */
+/*
        ev_io_init(&queue_add_event, QueueEventAddCallback, event_add_pipe[0], EV_READ);
        ev_io_start(event_base, &queue_add_event);
 
-
+*/
        event_base = ev_default_loop (EVFLAG_AUTO);
 ///    ev_loop(event_base, 0);
 
+       ev_io_init(&queue_add_event, QueueEventAddCallback, event_add_pipe[0], EV_READ);
+       ev_io_start(event_base, &queue_add_event);
+
+       ev_loop (event_base, 0);
        CtdlClearSystemContext();
        ev_default_destroy ();
        citthread_mutex_destroy(&EventQueueMutex);