summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKalev Lember <klember@redhat.com>2021-10-15 06:01:53 -0400
committerKalev Lember <klember@redhat.com>2021-10-15 12:10:04 +0200
commitf4e14edf66871c1b3dc213c286b28fd4a1742b78 (patch)
treecce094726da4dfe471fde088bfd36ecea280e854
parent02a94a4e7ef7c16a5f7d7b9c6abc4aa1f7e001d5 (diff)
downloadglib-wip/kalev/nm-1.32-propertieschanged.tar.gz
gnetworkmonitornm: Avoid using deprecated PropertiesChanged signalwip/kalev/nm-1.32-propertieschanged
Instead, use the standard PropertiesChanged signal from org.freedesktop.DBus.Properties which exists since NetworkManager 1.2.0. This fixes the network state monitoring to correctly work with NetworkManager 1.32 that completely removed the deprecated org.freedesktop.NetworkManager PropertiesChanged signal.
-rw-r--r--gio/gnetworkmonitornm.c49
1 files changed, 6 insertions, 43 deletions
diff --git a/gio/gnetworkmonitornm.c b/gio/gnetworkmonitornm.c
index 5a36a0ba1..a8040fb36 100644
--- a/gio/gnetworkmonitornm.c
+++ b/gio/gnetworkmonitornm.c
@@ -253,48 +253,11 @@ sync_properties (GNetworkMonitorNM *nm,
}
static void
-update_cached_property (GDBusProxy *proxy,
- const char *property_name,
- GVariantDict *dict)
+proxy_properties_changed_cb (GDBusProxy *proxy,
+ GVariant *changed_properties,
+ GStrv invalidated_properties,
+ GNetworkMonitorNM *nm)
{
- GVariant *v;
-
- v = g_variant_dict_lookup_value (dict, property_name, NULL);
- if (!v)
- return;
- g_dbus_proxy_set_cached_property (proxy, property_name, v);
- g_variant_unref (v);
-}
-
-static void
-proxy_signal_cb (GDBusProxy *proxy,
- const gchar *sender_name,
- const gchar *signal_name,
- GVariant *parameters,
- GNetworkMonitorNM *nm)
-{
- GVariant *asv;
- GVariantDict *dict;
-
- if (g_strcmp0 (signal_name, "PropertiesChanged") != 0)
- return;
-
- g_variant_get (parameters, "(@a{sv})", &asv);
- if (!asv)
- return;
-
- dict = g_variant_dict_new (asv);
- g_variant_unref (asv);
- if (!dict)
- {
- g_warning ("Failed to handle PropertiesChanged signal from NetworkManager");
- return;
- }
-
- update_cached_property (nm->priv->proxy, "Connectivity", dict);
-
- g_variant_dict_unref (dict);
-
sync_properties (nm, TRUE);
}
@@ -361,8 +324,8 @@ g_network_monitor_nm_initable_init (GInitable *initable,
return FALSE;
}
- nm->priv->signal_id = g_signal_connect (G_OBJECT (proxy), "g-signal",
- G_CALLBACK (proxy_signal_cb), nm);
+ nm->priv->signal_id = g_signal_connect (G_OBJECT (proxy), "g-properties-changed",
+ G_CALLBACK (proxy_properties_changed_cb), nm);
nm->priv->proxy = proxy;
sync_properties (nm, FALSE);