From 8a5abfbfc3ec40f860242faa583b33ea31b7cf1a Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 6 May 2016 15:32:58 -0400 Subject: [PATCH] eldbus: send exit/quit event upon disconnecting the session bus if an application is connected to the session bus, being disconnected should indicate that the session has been terminated and all applications in that session should also be terminated this ensures that no zombie processes will remain after the session bus dies --- src/lib/eldbus/eldbus_core.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/lib/eldbus/eldbus_core.c b/src/lib/eldbus/eldbus_core.c index f5bfc4a447..df3aab698e 100644 --- a/src/lib/eldbus/eldbus_core.c +++ b/src/lib/eldbus/eldbus_core.c @@ -979,8 +979,17 @@ static void _disconnected(void *data, const Eldbus_Message *msg EINA_UNUSED) { Eldbus_Connection *conn = data; + Ecore_Event_Signal_Exit *ev; + _eldbus_connection_event_callback_call( conn, ELDBUS_CONNECTION_EVENT_DISCONNECTED, NULL); + if (conn->type != ELDBUS_CONNECTION_TYPE_SESSION) return; + + ev = calloc(1, sizeof(Ecore_Event_Signal_Exit)); + if (!ev) return; + + ev->quit = EINA_TRUE; + ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, ev, NULL, NULL); } /* Param address is only used for ELDBUS_CONNECTION_TYPE_ADDRESS type */