Fix network state monitoring to work with NetworkManager 1.32 (#1991075)
This commit is contained in:
parent
947d874c70
commit
a2b6df263a
@ -0,0 +1,87 @@
|
||||
From f4e14edf66871c1b3dc213c286b28fd4a1742b78 Mon Sep 17 00:00:00 2001
|
||||
From: Kalev Lember <klember@redhat.com>
|
||||
Date: Fri, 15 Oct 2021 06:01:53 -0400
|
||||
Subject: [PATCH] gnetworkmonitornm: Avoid using deprecated PropertiesChanged
|
||||
signal
|
||||
|
||||
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.
|
||||
---
|
||||
gio/gnetworkmonitornm.c | 49 +++++------------------------------------
|
||||
1 file 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);
|
||||
|
||||
--
|
||||
2.31.1
|
||||
|
@ -17,6 +17,10 @@ Patch0: gnutls-hmac.patch
|
||||
# Proposed upstream at https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1596
|
||||
Patch1: gdesktopappinfo.patch
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1991075
|
||||
# https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2296
|
||||
Patch2: 0001-gnetworkmonitornm-Avoid-using-deprecated-PropertiesC.patch
|
||||
|
||||
BuildRequires: chrpath
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gcc-c++
|
||||
|
Loading…
Reference in New Issue
Block a user