From 92e0a18ae86c7a0c57291b52e218c575357b51a5 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 20 Dec 2008 09:57:00 +0100 Subject: Send PropertyChanged signal for added or removed adapters --- src/manager.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'src/manager.c') diff --git a/src/manager.c b/src/manager.c index 9714dfa3..6a365306 100644 --- a/src/manager.c +++ b/src/manager.c @@ -403,16 +403,37 @@ GSList *manager_get_adapters(void) return adapters; } +static void manager_update_adapters(void) +{ + GSList *list; + char **array; + int i; + + array = g_new0(char *, g_slist_length(adapters) + 1); + for (i = 0, list = adapters; list; list = list->next, i++) { + struct btd_adapter *adapter = list->data; + array[i] = (char *) adapter_get_path(adapter); + } + + emit_array_property_changed(connection, "/", + MANAGER_INTERFACE, "Adpaters", + DBUS_TYPE_OBJECT_PATH, &array); + + g_free(array); +} + static void manager_add_adapter(struct btd_adapter *adapter) { const gchar *path = adapter_get_path(adapter); + adapters = g_slist_append(adapters, adapter); + g_dbus_emit_signal(connection, "/", MANAGER_INTERFACE, "AdapterAdded", DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID); - adapters = g_slist_append(adapters, adapter); + manager_update_adapters(); if (default_adapter_id < 0) { int new_default = hci_get_route(NULL); @@ -431,6 +452,8 @@ static void manager_remove_adapter(struct btd_adapter *adapter) DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID); + manager_update_adapters(); + if (default_adapter_id == dev_id || default_adapter_id < 0) { int new_default = hci_get_route(NULL); -- cgit