dbus: destroy singleton instance of NMDBusManager on exit

Don't have the singleton instance of NMDBusManager owned by
the main function. Instead use NM_DEFINE_SINGLETON_DESTRUCTOR()
which also logs what's happening.

(cherry picked from commit 1208c0dd13)

Conflicts:
	src/main.c
This commit is contained in:
Thomas Haller 2015-01-06 13:15:43 +01:00
parent 62bff65e14
commit 04f22b9a44
2 changed files with 6 additions and 8 deletions

View file

@ -207,7 +207,6 @@ main (int argc, char *argv[])
NMManager *manager = NULL;
gs_unref_object NMVpnManager *vpn_manager = NULL;
gs_unref_object NMDnsManager *dns_mgr = NULL;
gs_unref_object NMDBusManager *dbus_mgr = NULL;
gs_unref_object NMSupplicantManager *sup_mgr = NULL;
gs_unref_object NMDhcpManager *dhcp_mgr = NULL;
gs_unref_object NMFirewallManager *fw_mgr = NULL;
@ -397,10 +396,6 @@ main (int argc, char *argv[])
nm_auth_manager_setup (nm_config_get_auth_polkit (config));
/* Initialize our DBus service & connection */
dbus_mgr = nm_dbus_manager_get ();
g_assert (dbus_mgr != NULL);
vpn_manager = nm_vpn_manager_get ();
g_assert (vpn_manager != NULL);
@ -445,7 +440,7 @@ main (int argc, char *argv[])
session_monitor = nm_session_monitor_get ();
g_assert (session_monitor != NULL);
if (!nm_dbus_manager_get_connection (dbus_mgr)) {
if (!nm_dbus_manager_get_connection (nm_dbus_manager_get ())) {
#if HAVE_DBUS_GLIB_100
nm_log_warn (LOGD_CORE, "Failed to connect to D-Bus; only private bus is available");
#else
@ -454,7 +449,7 @@ main (int argc, char *argv[])
#endif
} else {
/* Start our DBus service */
if (!nm_dbus_manager_start_service (dbus_mgr)) {
if (!nm_dbus_manager_start_service (nm_dbus_manager_get ())) {
nm_log_err (LOGD_CORE, "failed to start the dbus service.");
goto done;
}

View file

@ -78,15 +78,18 @@ static void nm_dbus_manager_cleanup (NMDBusManager *self, gboolean dispose);
static void start_reconnection_timeout (NMDBusManager *self);
static void object_destroyed (NMDBusManager *self, gpointer object);
NM_DEFINE_SINGLETON_DESTRUCTOR (NMDBusManager);
NM_DEFINE_SINGLETON_WEAK_REF (NMDBusManager);
NMDBusManager *
nm_dbus_manager_get (void)
{
static NMDBusManager *singleton_instance = NULL;
static gsize once = 0;
if (g_once_init_enter (&once)) {
singleton_instance = (NMDBusManager *) g_object_new (NM_TYPE_DBUS_MANAGER, NULL);
g_assert (singleton_instance);
nm_singleton_instance_weak_ref_register ();
if (!nm_dbus_manager_init_bus (singleton_instance))
start_reconnection_timeout (singleton_instance);
g_once_init_leave (&once, 1);