summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-01-14 20:51:55 +0100
committerThomas Haller <thaller@redhat.com>2019-01-21 14:41:58 +0100
commit64f53cc900f42acf59bd63aeb7339c7d597a7831 (patch)
treef1fb6b95139fb930c36f74b303a5916e57c5a35f
parent874d8de342cae7c91594b9a9c4b9f40fcf51e4d3 (diff)
downloadNetworkManager-th/various-for-wireguard-1.tar.gz
libnm: minor cleanup releasing setting from NMConnectionth/various-for-wireguard-1
There are two callers that are concerned with disconnecting/releasing a setting: - _setting_release_hfr() (formerly _setting_release()) - _nm_connection_add_setting() for the @s_old setting Compared to one caller that connects/adds a setting (_nm_connection_add_setting()). Refactor the two callers to use the same helper function (_setting_release()) so that the implementation of how to release a setting is at one place. This patch was originally done when adding another signal to NMSetting. That did not happen (yet), but the refactoring still makes sense.
-rw-r--r--libnm-core/nm-connection.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/libnm-core/nm-connection.c b/libnm-core/nm-connection.c
index 13d687e4d7..724e8557b8 100644
--- a/libnm-core/nm-connection.c
+++ b/libnm-core/nm-connection.c
@@ -102,10 +102,16 @@ setting_changed_cb (NMSetting *setting,
g_signal_emit (self, signals[CHANGED], 0);
}
+static void
+_setting_release (NMConnection *connection, NMSetting *setting)
+{
+ g_signal_handlers_disconnect_by_func (setting, setting_changed_cb, connection);
+}
+
static gboolean
-_setting_release (gpointer key, gpointer value, gpointer user_data)
+_setting_release_hfr (gpointer key, gpointer value, gpointer user_data)
{
- g_signal_handlers_disconnect_by_func (value, setting_changed_cb, user_data);
+ _setting_release (user_data, value);
return TRUE;
}
@@ -123,9 +129,10 @@ _nm_connection_add_setting (NMConnection *connection, NMSetting *setting)
setting_type = G_OBJECT_TYPE (setting);
if ((s_old = g_hash_table_lookup (priv->settings, _gtype_to_hash_key (setting_type))))
- g_signal_handlers_disconnect_by_func (s_old, setting_changed_cb, connection);
+ _setting_release (connection, s_old);
+
g_hash_table_insert (priv->settings, _gtype_to_hash_key (setting_type), setting);
- /* Listen for property changes so we can emit the 'changed' signal */
+
g_signal_connect (setting, "notify", (GCallback) setting_changed_cb, connection);
}
@@ -409,7 +416,7 @@ _nm_connection_replace_settings (NMConnection *connection,
}
if (g_hash_table_size (priv->settings) > 0) {
- g_hash_table_foreach_remove (priv->settings, _setting_release, connection);
+ g_hash_table_foreach_remove (priv->settings, _setting_release_hfr, connection);
changed = TRUE;
} else
changed = (settings != NULL);
@@ -494,7 +501,7 @@ nm_connection_replace_settings_from_connection (NMConnection *connection,
new_priv = NM_CONNECTION_GET_PRIVATE (new_connection);
if ((changed = g_hash_table_size (priv->settings) > 0))
- g_hash_table_foreach_remove (priv->settings, _setting_release, connection);
+ g_hash_table_foreach_remove (priv->settings, _setting_release_hfr, connection);
if (g_hash_table_size (new_priv->settings)) {
g_hash_table_iter_init (&iter, new_priv->settings);
@@ -523,7 +530,7 @@ nm_connection_clear_settings (NMConnection *connection)
priv = NM_CONNECTION_GET_PRIVATE (connection);
if (g_hash_table_size (priv->settings) > 0) {
- g_hash_table_foreach_remove (priv->settings, _setting_release, connection);
+ g_hash_table_foreach_remove (priv->settings, _setting_release_hfr, connection);
g_signal_emit (connection, signals[CHANGED], 0);
}
}
@@ -2961,7 +2968,7 @@ nm_connection_private_free (NMConnectionPrivate *priv)
{
NMConnection *self = priv->self;
- g_hash_table_foreach_remove (priv->settings, _setting_release, self);
+ g_hash_table_foreach_remove (priv->settings, _setting_release_hfr, self);
g_hash_table_destroy (priv->settings);
g_free (priv->path);