From d7056d13d0f63187ae1081bbe356d23e8f2585f2 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Mon, 20 May 2019 15:51:02 +0200 Subject: settings: drop nm_settings_plugin_initialize() and initialize on demand As nm_settings_plugin_initialize() could not fail (it returned no value indicating failure), there is no reason to explicitly call this. Instead just initialize the plugin when needed. Also, we don't need the plugin to initialize early before nm_settings_plugin_get_connections(). --- src/settings/nm-settings-plugin.c | 9 --------- src/settings/nm-settings-plugin.h | 5 ----- src/settings/nm-settings.c | 3 +-- src/settings/plugins/ifupdown/nms-ifupdown-plugin.c | 21 +++++++++++++++++---- 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/src/settings/nm-settings-plugin.c b/src/settings/nm-settings-plugin.c index 1d5086f52b..81a168b24d 100644 --- a/src/settings/nm-settings-plugin.c +++ b/src/settings/nm-settings-plugin.c @@ -40,15 +40,6 @@ G_DEFINE_TYPE (NMSettingsPlugin, nm_settings_plugin, G_TYPE_OBJECT) /*****************************************************************************/ -void -nm_settings_plugin_initialize (NMSettingsPlugin *self) -{ - g_return_if_fail (NM_IS_SETTINGS_PLUGIN (self)); - - if (NM_SETTINGS_PLUGIN_GET_CLASS (self)->initialize) - NM_SETTINGS_PLUGIN_GET_CLASS (self)->initialize (self); -} - GSList * nm_settings_plugin_get_connections (NMSettingsPlugin *self) { diff --git a/src/settings/nm-settings-plugin.h b/src/settings/nm-settings-plugin.h index 46dea3d700..11b859978a 100644 --- a/src/settings/nm-settings-plugin.h +++ b/src/settings/nm-settings-plugin.h @@ -41,9 +41,6 @@ typedef struct { typedef struct { GObjectClass parent; - /* Called when the plugin is loaded to initialize it */ - void (*initialize) (NMSettingsPlugin *plugin); - /* Returns a GSList of NMSettingsConnection objects that represent * connections the plugin knows about. The returned list is freed by the * system settings service. @@ -104,8 +101,6 @@ typedef NMSettingsPlugin *(*NMSettingsPluginFactoryFunc) (void); /* Plugin's factory function that returns a #NMSettingsPlugin */ NMSettingsPlugin *nm_settings_plugin_factory (void); -void nm_settings_plugin_initialize (NMSettingsPlugin *config); - GSList *nm_settings_plugin_get_connections (NMSettingsPlugin *plugin); gboolean nm_settings_plugin_load_connection (NMSettingsPlugin *plugin, diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index 817cbc1374..0e7dfcd337 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -612,8 +612,6 @@ add_plugin (NMSettings *self, priv->plugins = g_slist_append (priv->plugins, g_object_ref (plugin)); - nm_settings_plugin_initialize (plugin); - _LOGI ("Loaded settings plugin: %s (%s%s%s)", pname, NM_PRINT_FMT_QUOTED (path, "\"", path, "\"", "internal")); @@ -1923,6 +1921,7 @@ nm_settings_start (NMSettings *self, GError **error) return FALSE; load_connections (self); + check_startup_complete (self); priv->hostname_manager = g_object_ref (nm_hostname_manager_get ()); diff --git a/src/settings/plugins/ifupdown/nms-ifupdown-plugin.c b/src/settings/plugins/ifupdown/nms-ifupdown-plugin.c index 4710edfb17..8f9be772bb 100644 --- a/src/settings/plugins/ifupdown/nms-ifupdown-plugin.c +++ b/src/settings/plugins/ifupdown/nms-ifupdown-plugin.c @@ -55,7 +55,9 @@ typedef struct { */ GHashTable *eni_ifaces; - bool ifupdown_managed; + bool ifupdown_managed:1; + + bool initialized:1; } SettingsPluginIfupdownPrivate; struct _SettingsPluginIfupdown { @@ -88,6 +90,10 @@ NM_DEFINE_SINGLETON_GETTER (SettingsPluginIfupdown, settings_plugin_ifupdown_get /*****************************************************************************/ +static void initialize (SettingsPluginIfupdown *self); + +/*****************************************************************************/ + /* Returns the plugins currently known list of connections. The returned * list is freed by the system settings service. */ @@ -100,6 +106,9 @@ get_connections (NMSettingsPlugin *plugin) GHashTableIter iter; void *value; + if (G_UNLIKELY (!priv->initialized)) + initialize (self); + if (!priv->ifupdown_managed) { _LOGD ("get_connections: not connections due to managed=false"); return NULL; @@ -129,6 +138,9 @@ get_unmanaged_specs (NMSettingsPlugin *plugin) GHashTableIter iter; const char *iface; + if (G_UNLIKELY (!priv->initialized)) + initialize (self); + if (priv->ifupdown_managed) return NULL; @@ -144,9 +156,8 @@ get_unmanaged_specs (NMSettingsPlugin *plugin) /*****************************************************************************/ static void -initialize (NMSettingsPlugin *plugin) +initialize (SettingsPluginIfupdown *self) { - SettingsPluginIfupdown *self = SETTINGS_PLUGIN_IFUPDOWN (plugin); SettingsPluginIfupdownPrivate *priv = SETTINGS_PLUGIN_IFUPDOWN_GET_PRIVATE (self); gs_unref_hashtable GHashTable *auto_ifaces = NULL; nm_auto_ifparser if_parser *parser = NULL; @@ -155,6 +166,9 @@ initialize (NMSettingsPlugin *plugin) const char *block_name; NMIfupdownConnection *conn; + nm_assert (!priv->initialized); + priv->initialized = TRUE; + parser = ifparser_parse (ENI_INTERFACES_FILE, 0); c_list_for_each_entry (block, &parser->block_lst_head, block_lst) { @@ -316,7 +330,6 @@ settings_plugin_ifupdown_class_init (SettingsPluginIfupdownClass *klass) object_class->dispose = dispose; - plugin_class->initialize = initialize; plugin_class->get_connections = get_connections; plugin_class->get_unmanaged_specs = get_unmanaged_specs; } -- cgit v1.2.1