summaryrefslogtreecommitdiffstats
path: root/hcid/dbus-hci.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-06-06 13:35:07 +0000
committerMarcel Holtmann <marcel@holtmann.org>2008-06-06 13:35:07 +0000
commit8955dc1ce35be8c0ef70b0faa8846c2bf4b6de9f (patch)
treea0dd884d86173568a201ce011b7a352ff9d81087 /hcid/dbus-hci.c
parent5a63456081d0ba9cc8bdc66f17afe003788c9b33 (diff)
More cleanups and less casting
Diffstat (limited to 'hcid/dbus-hci.c')
-rw-r--r--hcid/dbus-hci.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c
index 57dd14b1..71d8efa5 100644
--- a/hcid/dbus-hci.c
+++ b/hcid/dbus-hci.c
@@ -431,6 +431,14 @@ static void reply_pending_requests(const char *path, struct adapter *adapter)
}
}
+static void do_unregister(gpointer data, gpointer user_data)
+{
+ DBusConnection *conn = user_data;
+ struct device *device = data;
+
+ device_remove(conn, device);
+}
+
int unregister_adapter_path(const char *path)
{
struct adapter *adapter = NULL;
@@ -509,8 +517,8 @@ int unregister_adapter_path(const char *path)
}
if (adapter->devices) {
- g_slist_foreach(adapter->devices,
- (GFunc) device_remove, connection);
+ g_slist_foreach(adapter->devices, do_unregister,
+ connection);
g_slist_free(adapter->devices);
}
@@ -520,14 +528,14 @@ int unregister_adapter_path(const char *path)
g_free(adapter);
unreg:
- if (!g_dbus_unregister_all_interfaces(connection, path)) {
+ if (!g_dbus_unregister_interface(connection, path, ADAPTER_INTERFACE)) {
error("D-Bus failed to unregister %s object", path);
return -1;
}
if (hcid_dbus_use_experimental()) {
const char *ptr = path + ADAPTER_PATH_INDEX;
- g_dbus_unregister_all_interfaces(connection, ptr);
+ g_dbus_unregister_interface(connection, ptr, ADAPTER_INTERFACE);
}
return 0;
@@ -594,8 +602,11 @@ int hcid_dbus_register_device(uint16_t id)
return 0;
failed:
+ if (hcid_dbus_use_experimental())
+ g_dbus_unregister_interface(connection, ptr, ADAPTER_INTERFACE);
+
g_dbus_unregister_interface(connection, path, ADAPTER_INTERFACE);
- g_dbus_unregister_interface(connection, ptr, ADAPTER_INTERFACE);
+
g_free(adapter->path);
g_free(adapter);