diff options
Diffstat (limited to 'src/devices/wifi/nm-iwd-manager.c')
| -rw-r--r-- | src/devices/wifi/nm-iwd-manager.c | 52 |
1 files changed, 35 insertions, 17 deletions
diff --git a/src/devices/wifi/nm-iwd-manager.c b/src/devices/wifi/nm-iwd-manager.c index bdff20ac..6a562014 100644 --- a/src/devices/wifi/nm-iwd-manager.c +++ b/src/devices/wifi/nm-iwd-manager.c @@ -632,6 +632,38 @@ interface_removed(GDBusObjectManager *object_manager, } static void +object_added(GDBusObjectManager *object_manager, GDBusObject *object, gpointer user_data) +{ + GList *interfaces, *iter; + + interfaces = g_dbus_object_get_interfaces(object); + + for (iter = interfaces; iter; iter = iter->next) { + GDBusInterface *interface = G_DBUS_INTERFACE(iter->data); + + interface_added(NULL, object, interface, user_data); + } + + g_list_free_full(interfaces, g_object_unref); +} + +static void +object_removed(GDBusObjectManager *object_manager, GDBusObject *object, gpointer user_data) +{ + GList *interfaces, *iter; + + interfaces = g_dbus_object_get_interfaces(object); + + for (iter = interfaces; iter; iter = iter->next) { + GDBusInterface *interface = G_DBUS_INTERFACE(iter->data); + + interface_removed(NULL, object, interface, user_data); + } + + g_list_free_full(interfaces, g_object_unref); +} + +static void connection_removed(NMSettings *settings, NMSettingsConnection *sett_conn, gpointer user_data) { NMIwdManager * self = user_data; @@ -697,22 +729,6 @@ _om_has_name_owner(GDBusObjectManager *object_manager) } static void -object_added(NMIwdManager *self, GDBusObject *object) -{ - GList *interfaces, *iter; - - interfaces = g_dbus_object_get_interfaces(object); - - for (iter = interfaces; iter; iter = iter->next) { - GDBusInterface *interface = G_DBUS_INTERFACE(iter->data); - - interface_added(NULL, object, interface, self); - } - - g_list_free_full(interfaces, g_object_unref); -} - -static void release_object_manager(NMIwdManager *self) { NMIwdManagerPrivate *priv = NM_IWD_MANAGER_GET_PRIVATE(self); @@ -852,12 +868,14 @@ got_object_manager(GObject *object, GAsyncResult *result, gpointer user_data) "interface-removed", G_CALLBACK(interface_removed), self); + g_signal_connect(priv->object_manager, "object-added", G_CALLBACK(object_added), self); + g_signal_connect(priv->object_manager, "object-removed", G_CALLBACK(object_removed), self); g_hash_table_remove_all(priv->known_networks); objects = g_dbus_object_manager_get_objects(object_manager); for (iter = objects; iter; iter = iter->next) - object_added(self, G_DBUS_OBJECT(iter->data)); + object_added(NULL, G_DBUS_OBJECT(iter->data), self); g_list_free_full(objects, g_object_unref); |