diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2008-03-13 12:34:10 +0000 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2008-03-13 12:34:10 +0000 |
commit | 81cfb0fc353b88658aec4c1ee0eb6cc5f851df41 (patch) | |
tree | 3107427069c2a64b7b2494b8661995ce9bcc362f /hcid | |
parent | 25e819828847f241fe0f77565edf0dffad5700c9 (diff) |
cleanup: removed device's static D-Bus connection reference
Diffstat (limited to 'hcid')
-rw-r--r-- | hcid/adapter.c | 5 | ||||
-rw-r--r-- | hcid/dbus-common.c | 3 | ||||
-rw-r--r-- | hcid/dbus-hci.c | 5 | ||||
-rw-r--r-- | hcid/device.c | 24 | ||||
-rw-r--r-- | hcid/device.h | 7 |
5 files changed, 15 insertions, 29 deletions
diff --git a/hcid/adapter.c b/hcid/adapter.c index 763118e8..3897bbb1 100644 --- a/hcid/adapter.c +++ b/hcid/adapter.c @@ -3358,7 +3358,8 @@ static void discover_services_cb(gpointer user_data, sdp_list_t *recs, int err) sdp_list_free(recs, (sdp_free_func_t) sdp_record_free); - device = device_create(adapter, adapter->create->address, uuids); + device = device_create(adapter->create->conn, adapter, + adapter->create->address, uuids); if (!device) goto failed; @@ -3490,7 +3491,7 @@ static DBusHandlerResult remove_device(DBusConnection *conn, DBUS_TYPE_OBJECT_PATH, &device->path, DBUS_TYPE_INVALID); - device_destroy(device); + device_destroy(device, conn); adapter->devices = g_slist_remove(adapter->devices, device); return send_message_and_unref(conn, reply); diff --git a/hcid/dbus-common.c b/hcid/dbus-common.c index 166d7184..d3d3a151 100644 --- a/hcid/dbus-common.c +++ b/hcid/dbus-common.c @@ -349,9 +349,6 @@ int hcid_dbus_init(void) if (!security_init(conn, BASE_PATH)) return -1; - if (device_init(conn) == FALSE) - return -1; - set_dbus_connection(conn); return 0; diff --git a/hcid/dbus-hci.c b/hcid/dbus-hci.c index 837d47af..c1faa4a8 100644 --- a/hcid/dbus-hci.c +++ b/hcid/dbus-hci.c @@ -451,7 +451,8 @@ int unregister_adapter_path(const char *path) } if (adapter->devices) { - g_slist_foreach(adapter->devices, (GFunc) device_destroy, NULL); + g_slist_foreach(adapter->devices, + (GFunc) device_destroy, connection); g_slist_free(adapter->devices); } @@ -577,7 +578,7 @@ static void create_stored_device(char *key, char *value, void *user_data) GSList *uuids = bt_string2list(value); struct device *device; - device = device_create(adapter, key, uuids); + device = device_create(connection, adapter, key, uuids); if (device) adapter->devices = g_slist_append(adapter->devices, device); } diff --git a/hcid/device.c b/hcid/device.c index 5e129ab5..0f1ab4a4 100644 --- a/hcid/device.c +++ b/hcid/device.c @@ -711,18 +711,6 @@ int get_encryption_key_size(uint16_t dev_id, const bdaddr_t *baddr) return size; } -static DBusConnection *connection = NULL; - -gboolean device_init(DBusConnection *conn) -{ - /* FIXME: It's not necessary keep a connection reference */ - connection = dbus_connection_ref(conn); - if (connection == NULL) - return FALSE; - - return TRUE; -} - static void device_free(struct device *device) { g_slist_foreach(device->uuids, (GFunc) g_free, NULL); @@ -857,8 +845,8 @@ static DBusSignalVTable device_signals[] = { { NULL, NULL } }; -struct device *device_create(struct adapter *adapter, - const gchar *address, GSList *uuids) +struct device *device_create(DBusConnection *conn, struct adapter *adapter, + const gchar *address, GSList *uuids) { struct device *device; @@ -872,13 +860,13 @@ struct device *device_create(struct adapter *adapter, debug("Creating device %s", device->path); - if (dbus_connection_create_object_path(connection, device->path, + if (dbus_connection_create_object_path(conn, device->path, device, device_unregister) == FALSE) { device_free(device); return NULL; } - dbus_connection_register_interface(connection, device->path, + dbus_connection_register_interface(conn, device->path, DEVICE_INTERFACE, device_methods, device_signals, NULL); device->address = g_strdup(address); @@ -888,9 +876,9 @@ struct device *device_create(struct adapter *adapter, return device; } -void device_destroy(struct device *device) +void device_destroy(struct device *device, DBusConnection *conn) { debug("Removing device %s", device->path); - dbus_connection_destroy_object_path(connection, device->path); + dbus_connection_destroy_object_path(conn, device->path); } diff --git a/hcid/device.h b/hcid/device.h index dc55f0a8..524e0441 100644 --- a/hcid/device.h +++ b/hcid/device.h @@ -29,7 +29,6 @@ struct device { GSList *uuids; }; -gboolean device_init(DBusConnection *conn); -struct device *device_create(struct adapter *adapter, - const gchar *address, GSList *uuids); -void device_destroy(struct device *device); +struct device *device_create(DBusConnection *conn, struct adapter *adapter, + const gchar *address, GSList *uuids); +void device_destroy(struct device *device, DBusConnection *conn); |