diff options
author | Kalev Lember <klember@redhat.com> | 2021-10-15 06:01:53 -0400 |
---|---|---|
committer | Kalev Lember <klember@redhat.com> | 2021-10-15 12:10:04 +0200 |
commit | f4e14edf66871c1b3dc213c286b28fd4a1742b78 (patch) | |
tree | cce094726da4dfe471fde088bfd36ecea280e854 | |
parent | 02a94a4e7ef7c16a5f7d7b9c6abc4aa1f7e001d5 (diff) | |
download | glib-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.c | 49 |
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); |