diff options
author | Thomas Haller <thaller@redhat.com> | 2019-03-22 13:26:49 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2019-03-25 09:12:33 +0100 |
commit | 7dcf368cf04d3ae7da9b61bf7986842f4eb3c465 (patch) | |
tree | 1ded64e341f16e843280d5d7c11f7c3fb055a592 /clients | |
parent | d3343b241fe1f474a9f24dbb183976ae74c995bb (diff) | |
download | NetworkManager-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().
Diffstat (limited to 'clients')
-rw-r--r-- | clients/cli/settings.c | 18 |
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")); |