nm-active-connection: Emit device-metered-changed if device changes

The new device might have a different metered status from the old one.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Fixes: 04d5804dd5 ('nm-manager: add 'metered' property')

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/982
This commit is contained in:
Philip Withnall 2021-09-15 15:31:17 +01:00 committed by Thomas Haller
parent 756757102f
commit 0ad77d05b9
No known key found for this signature in database
GPG key ID: 29C2366E4DFC5728

View file

@ -678,6 +678,7 @@ nm_active_connection_set_device(NMActiveConnection *self, NMDevice *device)
{
NMActiveConnectionPrivate *priv;
gs_unref_object NMDevice *old_device = NULL;
NMMetered old_metered, new_metered;
g_return_val_if_fail(NM_IS_ACTIVE_CONNECTION(self), FALSE);
g_return_val_if_fail(!device || NM_IS_DEVICE(device), FALSE);
@ -695,6 +696,8 @@ nm_active_connection_set_device(NMActiveConnection *self, NMDevice *device)
device);
old_device = priv->device ? g_object_ref(priv->device) : NULL;
old_metered = old_device ? nm_device_get_metered(old_device) : NM_METERED_UNKNOWN;
_device_cleanup(self);
if (device) {
@ -730,7 +733,11 @@ nm_active_connection_set_device(NMActiveConnection *self, NMDevice *device)
}
_notify(self, PROP_INT_DEVICE);
new_metered = priv->device ? nm_device_get_metered(priv->device) : NM_METERED_UNKNOWN;
g_signal_emit(self, signals[DEVICE_CHANGED], 0, priv->device, old_device);
if (new_metered != old_metered)
g_signal_emit(self, signals[DEVICE_METERED_CHANGED], 0, new_metered);
_notify(self, PROP_DEVICES);