summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hcid/dbus-common.c5
-rw-r--r--hcid/manager.c8
-rw-r--r--hcid/manager.h1
3 files changed, 10 insertions, 4 deletions
diff --git a/hcid/dbus-common.c b/hcid/dbus-common.c
index 6028bc78..1270a002 100644
--- a/hcid/dbus-common.c
+++ b/hcid/dbus-common.c
@@ -303,10 +303,7 @@ void hcid_dbus_exit(void)
dbus_free_string_array(children);
done:
- dbus_connection_destroy_object_path(conn, BASE_PATH);
-
- if (hcid_dbus_use_experimental())
- dbus_connection_destroy_object_path(conn, "/");
+ manager_cleanup(conn, BASE_PATH);
set_dbus_connection(NULL);
diff --git a/hcid/manager.c b/hcid/manager.c
index 5c26f883..24ce93a9 100644
--- a/hcid/manager.c
+++ b/hcid/manager.c
@@ -539,6 +539,14 @@ dbus_bool_t manager_init(DBusConnection *conn, const char *path)
NULL, NULL, NULL);
}
+void manager_cleanup(DBusConnection *conn, const char *path)
+{
+ g_dbus_unregister_interface(conn, path, MANAGER_INTERFACE);
+
+ if (hcid_dbus_use_experimental())
+ g_dbus_unregister_interface(conn, "/", MANAGER_INTERFACE);
+}
+
int get_default_adapter(void)
{
return default_adapter_id;
diff --git a/hcid/manager.h b/hcid/manager.h
index 7d435dea..c8924583 100644
--- a/hcid/manager.h
+++ b/hcid/manager.h
@@ -25,6 +25,7 @@
#define MANAGER_INTERFACE "org.bluez.Manager"
dbus_bool_t manager_init(DBusConnection *conn, const char *path);
+void manager_cleanup(DBusConnection *conn, const char *path);
int get_default_adapter(void);