summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-02-16 15:36:55 +0100
committerThomas Haller <thaller@redhat.com>2015-02-16 16:09:40 +0100
commit80700b5d889cf4d96eec56f0e6f9157036c2d70c (patch)
tree58a2cd826cdd8399544d16b61ae13c1568e0d1a8
parent5e74891b58688a19c43fb8e50880166d94a4e901 (diff)
downloadNetworkManager-80700b5d889cf4d96eec56f0e6f9157036c2d70c.tar.gz
dbus-manager: refactor singleton getter dropping g_once_init_enter()
The class itself is not thread-safe, so no need for guarding the creation with g_once_init_*(). Also, assert against multiple creation and log a line when creating the singleton. The getter is now more similar to what is created by NM_DEFINE_SINGLETON_GETTER().
-rw-r--r--src/nm-dbus-manager.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/nm-dbus-manager.c b/src/nm-dbus-manager.c
index e29c23dc21..65ba8803c8 100644
--- a/src/nm-dbus-manager.c
+++ b/src/nm-dbus-manager.c
@@ -80,19 +80,20 @@ static void object_destroyed (NMDBusManager *self, gpointer object);
NM_DEFINE_SINGLETON_DESTRUCTOR (NMDBusManager);
NM_DEFINE_SINGLETON_WEAK_REF (NMDBusManager);
+static char singleton_already_created = FALSE;
NMDBusManager *
nm_dbus_manager_get (void)
{
- static gsize once = 0;
-
- if (g_once_init_enter (&once)) {
- singleton_instance = (NMDBusManager *) g_object_new (NM_TYPE_DBUS_MANAGER, NULL);
+ if (G_UNLIKELY (!singleton_instance)) {
+ g_assert (!singleton_already_created);
+ singleton_already_created = TRUE;
+ singleton_instance = g_object_new (NM_TYPE_DBUS_MANAGER, NULL);
g_assert (singleton_instance);
nm_singleton_instance_weak_ref_register ();
+ nm_log_dbg (LOGD_CORE, "create %s singleton (%p)", "NMDBusManager", singleton_instance);
if (!nm_dbus_manager_init_bus (singleton_instance))
start_reconnection_timeout (singleton_instance);
- g_once_init_leave (&once, 1);
}
return singleton_instance;
}