From 3a3a32a2bb55cd64510dcdbe3bf8e844a747b49a Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 24 Aug 2018 13:56:25 +0000 Subject: [PATCH] portal network monitor: Always emit ::network-changed The documentation of this signal is not really clear, but it seems safer to emit it for all changes, even if available is unchanged. --- gio/gnetworkmonitorportal.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gio/gnetworkmonitorportal.c b/gio/gnetworkmonitorportal.c index 4796d4343..33bdea87f 100644 --- a/gio/gnetworkmonitorportal.c +++ b/gio/gnetworkmonitorportal.c @@ -149,6 +149,7 @@ got_metered (GObject *source, { nm->priv->metered = metered; g_object_notify (G_OBJECT (nm), "network-metered"); + g_signal_emit_by_name (nm, "network-changed", nm->priv->available); } } @@ -178,6 +179,7 @@ got_connectivity (GObject *source, { nm->priv->connectivity = connectivity; g_object_notify (G_OBJECT (nm), "connectivity"); + g_signal_emit_by_name (nm, "network-changed", nm->priv->available); } } @@ -219,6 +221,8 @@ proxy_properties_changed (GDBusProxy *proxy, GVariant *invalidated, GNetworkMonitorPortal *nm) { + gboolean should_emit_changed = FALSE; + if (!nm->priv->has_network) return; @@ -234,6 +238,7 @@ proxy_properties_changed (GDBusProxy *proxy, { nm->priv->connectivity = connectivity; g_object_notify (G_OBJECT (nm), "connectivity"); + should_emit_changed = TRUE; } g_variant_unref (ret); } @@ -246,6 +251,7 @@ proxy_properties_changed (GDBusProxy *proxy, { nm->priv->metered = metered; g_object_notify (G_OBJECT (nm), "network-metered"); + should_emit_changed = TRUE; } g_variant_unref (ret); } @@ -258,11 +264,14 @@ proxy_properties_changed (GDBusProxy *proxy, { nm->priv->available = available; g_object_notify (G_OBJECT (nm), "network-available"); - g_signal_emit_by_name (nm, "network-changed", available); + should_emit_changed = TRUE; } g_variant_unref (ret); } } + + if (should_emit_changed) + g_signal_emit_by_name (nm, "network-changed", nm->priv->available); } static gboolean