summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-03-22 13:26:49 +0100
committerThomas Haller <thaller@redhat.com>2019-03-25 09:12:33 +0100
commit7dcf368cf04d3ae7da9b61bf7986842f4eb3c465 (patch)
tree1ded64e341f16e843280d5d7c11f7c3fb055a592
parentd3343b241fe1f474a9f24dbb183976ae74c995bb (diff)
downloadNetworkManager-7dcf368cf04d3ae7da9b61bf7986842f4eb3c465.tar.gz
cli: freeze/thaw property changed signals in nmc_setting_set_property()
Setting one property might affect multiple properties. For example, setting a team property might also emit property changed signal for "team.config". Or, one property might be modified multiple times. For example list properties may first clear the property, then append multiple elements. Or a list property might remove multiple elements. Combine these signals via g_object_freeze_notify() and g_object_thaw_notify().
-rw-r--r--clients/cli/settings.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/clients/cli/settings.c b/clients/cli/settings.c
index 5b13bf03f3..aa0a7ff23c 100644
--- a/clients/cli/settings.c
+++ b/clients/cli/settings.c
@@ -538,6 +538,7 @@ nmc_setting_set_property (NMClient *client,
{
const NMMetaPropertyInfo *property_info;
gs_free char *value_to_free = NULL;
+ gboolean success;
g_return_val_if_fail (NM_IS_SETTING (setting), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
@@ -572,13 +573,16 @@ nmc_setting_set_property (NMClient *client,
}
}
- return property_info->property_type->set_fcn (property_info,
- nmc_meta_environment,
- nmc_meta_environment_arg,
- setting,
- modifier,
- value,
- error);
+ g_object_freeze_notify (G_OBJECT (setting));
+ success = property_info->property_type->set_fcn (property_info,
+ nmc_meta_environment,
+ nmc_meta_environment_arg,
+ setting,
+ modifier,
+ value,
+ error);
+ g_object_thaw_notify (G_OBJECT (setting));
+ return success;
out_fail_read_only:
nm_utils_error_set (error, NM_UTILS_ERROR_UNKNOWN, _("the property can't be changed"));