diff options
author | Thomas Haller <thaller@redhat.com> | 2015-08-05 11:34:10 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-08-05 14:40:41 +0200 |
commit | 7c169cd5d974c9fbabd40749d9ab5890aa2a4faf (patch) | |
tree | ab5a48268bda4b6bea6f9210809dfd1fdcd12754 | |
parent | eb950d57662ccfb95db76afd7efed79b7b2acb93 (diff) | |
download | NetworkManager-7c169cd5d974c9fbabd40749d9ab5890aa2a4faf.tar.gz |
fixup! core: order destruction of singleton instances
Remove the @register_destruction argument from
nm_singleton_instance_register() and always register singletons for
destruction.
For NMPlatform, intentionally leak the instance for now, and fix it
later.
-rw-r--r-- | src/NetworkManagerUtils.h | 7 | ||||
-rw-r--r-- | src/nm-auth-manager.c | 2 | ||||
-rw-r--r-- | src/nm-bus-manager.c | 2 | ||||
-rw-r--r-- | src/nm-config.c | 2 | ||||
-rw-r--r-- | src/platform/nm-platform.c | 7 |
5 files changed, 12 insertions, 8 deletions
diff --git a/src/NetworkManagerUtils.h b/src/NetworkManagerUtils.h index 5ad973bdf8..118534b8b3 100644 --- a/src/NetworkManagerUtils.h +++ b/src/NetworkManagerUtils.h @@ -44,11 +44,10 @@ _singleton_instance_weak_ref_cb (gpointer data, \ singleton_instance = NULL; \ } \ static inline void \ -nm_singleton_instance_register (gboolean register_destruction) \ +nm_singleton_instance_register () \ { \ g_object_weak_ref (G_OBJECT (singleton_instance), _singleton_instance_weak_ref_cb, NULL); \ - if (register_destruction) \ - _nm_singleton_instance_register_destruction (G_OBJECT (singleton_instance)); \ + _nm_singleton_instance_register_destruction (G_OBJECT (singleton_instance)); \ } void _nm_singleton_instance_register_destruction (GObject *instance); @@ -72,7 +71,7 @@ GETTER (void) \ _already_created = TRUE;\ singleton_instance = (g_object_new (GTYPE, ##__VA_ARGS__, NULL)); \ g_assert (singleton_instance); \ - nm_singleton_instance_register (TRUE); \ + nm_singleton_instance_register (); \ nm_log_dbg (LOGD_CORE, "create %s singleton (%p)", G_STRINGIFY (TYPE), singleton_instance); \ } \ return singleton_instance; \ diff --git a/src/nm-auth-manager.c b/src/nm-auth-manager.c index fb75fb72b2..298bc096fe 100644 --- a/src/nm-auth-manager.c +++ b/src/nm-auth-manager.c @@ -498,7 +498,7 @@ nm_auth_manager_setup (gboolean polkit_enabled) _LOGD ("set instance"); singleton_instance = self; - nm_singleton_instance_register (TRUE); + nm_singleton_instance_register (); return self; } diff --git a/src/nm-bus-manager.c b/src/nm-bus-manager.c index fdb93e2636..e604746c18 100644 --- a/src/nm-bus-manager.c +++ b/src/nm-bus-manager.c @@ -102,7 +102,7 @@ nm_bus_manager_setup (NMBusManager *instance) already_setup = TRUE; singleton_instance = instance; - nm_singleton_instance_register (TRUE); + nm_singleton_instance_register (); nm_log_dbg (LOGD_CORE, "create %s singleton (%p)", "NMBusManager", singleton_instance); } diff --git a/src/nm-config.c b/src/nm-config.c index 00dee19daf..71ff69be57 100644 --- a/src/nm-config.c +++ b/src/nm-config.c @@ -1687,7 +1687,7 @@ nm_config_setup (const NMConfigCmdLineOptions *cli, char **atomic_section_prefix singleton_instance = nm_config_new (cli, atomic_section_prefixes, error); if (singleton_instance) - nm_singleton_instance_register (TRUE); + nm_singleton_instance_register (); return singleton_instance; } diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c index 8d19b0301b..6af39050ee 100644 --- a/src/platform/nm-platform.c +++ b/src/platform/nm-platform.c @@ -154,7 +154,12 @@ nm_platform_setup (NMPlatform *instance) singleton_instance = instance; - nm_singleton_instance_register (FALSE); + nm_singleton_instance_register (); + + /* FIXME: intentionally leak the singleton instance of NMPlatform. + * We don't yet shut down all singletons properly, so don't destroy + * NMPlatform. */ + g_object_ref (instance); nm_log_dbg (LOGD_CORE, "setup NMPlatform singleton (%p, %s)", instance, G_OBJECT_TYPE_NAME (instance)); } |