diff --git a/legacy/edbus/src/lib/edbus_connection.h b/legacy/edbus/src/lib/edbus_connection.h index 5cbf76d24b..0b2b44a1f7 100644 --- a/legacy/edbus/src/lib/edbus_connection.h +++ b/legacy/edbus/src/lib/edbus_connection.h @@ -101,6 +101,7 @@ EAPI void *edbus_connection_data_del(EDBus_Connection *conn, const c typedef enum { EDBUS_CONNECTION_EVENT_DEL, + EDBUS_CONNECTION_DISCONNECTED, EDBUS_CONNECTION_EVENT_LAST /**< sentinel, not a real event type */ } EDBus_Connection_Event_Type; diff --git a/legacy/edbus/src/lib/edbus_core.c b/legacy/edbus/src/lib/edbus_core.c index 067422ce08..0d3969a694 100644 --- a/legacy/edbus/src/lib/edbus_core.c +++ b/legacy/edbus/src/lib/edbus_core.c @@ -908,6 +908,14 @@ edbus_connection_setup(EDBus_Connection *conn) conn); } +static void +_disconnected(void *data, const EDBus_Message *msg) +{ + EDBus_Connection *conn = data; + _edbus_connection_event_callback_call(conn, EDBUS_CONNECTION_DISCONNECTED, + NULL); +} + static EDBus_Connection * _connection_get(EDBus_Connection_Type type) { @@ -935,6 +943,9 @@ _connection_get(EDBus_Connection_Type type) EINA_MAGIC_SET(conn, EDBUS_CONNECTION_MAGIC); conn->names = eina_hash_string_superfast_new(NULL); + edbus_signal_handler_add(conn, NULL, DBUS_PATH_LOCAL, DBUS_INTERFACE_LOCAL, + "Disconnected", _disconnected, conn); + DBG("Returned new connection at %p", conn); return conn; }