[gnome-bluetooth] lib: Fix updating device and adapter list after initialization
- From: Benjamin Berg <bberg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-bluetooth] lib: Fix updating device and adapter list after initialization
- Date: Thu, 23 Nov 2017 12:21:24 +0000 (UTC)
commit d09e649252e207b5880d22e9dfb1928fb171db34
Author: Benjamin Berg <bberg redhat com>
Date: Wed Nov 22 15:11:13 2017 +0100
lib: Fix updating device and adapter list after initialization
Patch 17983ace (lib: Use GDBusObjectManager) only added listeners for
interface-added and interface-removed. However, as GDBusObjectManager
simplifies the API to emit object-added/-removed those have to be
listened for changes too.
Without this the list of bluetooth devices and adapters is never updated
after the initial object listing.
https://bugzilla.gnome.org/show_bug.cgi?id=790714
lib/bluetooth-client.c | 33 +++++++++++++++++++++++++++++++++
1 files changed, 33 insertions(+), 0 deletions(-)
---
diff --git a/lib/bluetooth-client.c b/lib/bluetooth-client.c
index c3eec76..7abb437 100644
--- a/lib/bluetooth-client.c
+++ b/lib/bluetooth-client.c
@@ -783,6 +783,36 @@ interface_removed (GDBusObjectManager *manager,
}
static void
+object_added (GDBusObjectManager *manager,
+ GDBusObject *object,
+ BluetoothClient *client)
+{
+ GList *interfaces, *l;
+
+ interfaces = g_dbus_object_get_interfaces (object);
+
+ for (l = interfaces; l != NULL; l = l->next)
+ interface_added (manager, object, G_DBUS_INTERFACE (l->data), client);
+
+ g_list_free_full (interfaces, g_object_unref);
+}
+
+static void
+object_removed (GDBusObjectManager *manager,
+ GDBusObject *object,
+ BluetoothClient *client)
+{
+ GList *interfaces, *l;
+
+ interfaces = g_dbus_object_get_interfaces (object);
+
+ for (l = interfaces; l != NULL; l = l->next)
+ interface_removed (manager, object, G_DBUS_INTERFACE (l->data), client);
+
+ g_list_free_full (interfaces, g_object_unref);
+}
+
+static void
object_manager_new_callback(GObject *source_object,
GAsyncResult *res,
void *user_data)
@@ -802,6 +832,9 @@ object_manager_new_callback(GObject *source_object,
g_signal_connect (G_OBJECT (priv->manager), "interface-added", (GCallback) interface_added, client);
g_signal_connect (G_OBJECT (priv->manager), "interface-removed", (GCallback) interface_removed,
client);
+ g_signal_connect (G_OBJECT (priv->manager), "object-added", (GCallback) object_added, client);
+ g_signal_connect (G_OBJECT (priv->manager), "object-removed", (GCallback) object_removed, client);
+
object_list = g_dbus_object_manager_get_objects (priv->manager);
/* We need to add the adapters first, otherwise the devices will
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]