diff options
Diffstat (limited to 'libnm-core/nm-setting-user.c')
| -rw-r--r-- | libnm-core/nm-setting-user.c | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/libnm-core/nm-setting-user.c b/libnm-core/nm-setting-user.c index d72c9094..01ac671b 100644 --- a/libnm-core/nm-setting-user.c +++ b/libnm-core/nm-setting-user.c @@ -395,33 +395,34 @@ verify (NMSetting *setting, NMConnection *connection, GError **error) return TRUE; } -static gboolean -compare_property (NMSetting *setting, +static NMTernary +compare_property (const NMSettInfoSetting *sett_info, + guint property_idx, + NMSetting *setting, NMSetting *other, - const GParamSpec *prop_spec, NMSettingCompareFlags flags) { NMSettingUserPrivate *priv, *pri2; - g_return_val_if_fail (NM_IS_SETTING_USER (setting), FALSE); - g_return_val_if_fail (NM_IS_SETTING_USER (other), FALSE); - - if (!nm_streq0 (prop_spec->name, NM_SETTING_USER_DATA)) - goto call_parent; + if (nm_streq (sett_info->property_infos[property_idx].name, NM_SETTING_USER_DATA)) { - priv = NM_SETTING_USER_GET_PRIVATE (NM_SETTING_USER (setting)); - pri2 = NM_SETTING_USER_GET_PRIVATE (NM_SETTING_USER (other)); - - if (!nm_utils_hash_table_equal (priv->data, pri2->data, TRUE, g_str_equal)) - return FALSE; + if (NM_FLAGS_HAS (flags, NM_SETTING_COMPARE_FLAG_INFERRABLE)) + return NM_TERNARY_DEFAULT; - if (!nm_utils_hash_table_equal (priv->data_invalid, pri2->data_invalid, TRUE, g_str_equal)) - return FALSE; + if (!other) + return TRUE; - return TRUE; + priv = NM_SETTING_USER_GET_PRIVATE (NM_SETTING_USER (setting)); + pri2 = NM_SETTING_USER_GET_PRIVATE (NM_SETTING_USER (other)); + return nm_utils_hash_table_equal (priv->data, pri2->data, TRUE, g_str_equal) + && nm_utils_hash_table_equal (priv->data_invalid, pri2->data_invalid, TRUE, g_str_equal); + } -call_parent: - return NM_SETTING_CLASS (nm_setting_user_parent_class)->compare_property (setting, other, prop_spec, flags); + return NM_SETTING_CLASS (nm_setting_user_parent_class)->compare_property (sett_info, + property_idx, + setting, + other, + flags); } /*****************************************************************************/ @@ -549,8 +550,8 @@ nm_setting_user_class_init (NMSettingUserClass *klass) NMSettingClass *setting_class = NM_SETTING_CLASS (klass); GArray *properties_override = _nm_sett_info_property_override_create_array (); - object_class->set_property = set_property; object_class->get_property = get_property; + object_class->set_property = set_property; object_class->finalize = finalize; setting_class->compare_property = compare_property; @@ -583,15 +584,14 @@ nm_setting_user_class_init (NMSettingUserClass *klass) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); - _properties_override_add_transform (properties_override, - g_object_class_find_property (G_OBJECT_CLASS (setting_class), - NM_SETTING_USER_DATA), + obj_properties[PROP_DATA], G_VARIANT_TYPE ("a{ss}"), _nm_utils_strdict_to_dbus, _nm_utils_strdict_from_dbus); + g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties); + _nm_setting_class_commit_full (setting_class, NM_META_SETTING_TYPE_USER, NULL, properties_override); } |