diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-06-06 13:35:07 +0000 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-06-06 13:35:07 +0000 |
commit | 8955dc1ce35be8c0ef70b0faa8846c2bf4b6de9f (patch) | |
tree | a0dd884d86173568a201ce011b7a352ff9d81087 /hcid/dbus-hci.c | |
parent | 5a63456081d0ba9cc8bdc66f17afe003788c9b33 (diff) |
More cleanups and less casting
Diffstat (limited to 'hcid/dbus-hci.c')
-rw-r--r-- | hcid/dbus-hci.c | 21 |
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); |