2008-08-04 Dan Williams <dcbw@redhat.com>

Patch from Sjoerd Simons <sjoerd.simons@collabora.co.uk>

	* src/NetworkManager.c
	  src/nm-manager.c
	  src/nm-manager.h
		- More explicitly make the NMManager a singleton



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3896 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Dan Williams 2008-08-04 22:24:58 +00:00
parent fb74207755
commit 2f3820c624
4 changed files with 29 additions and 15 deletions

View file

@ -1,3 +1,12 @@
2008-08-04 Dan Williams <dcbw@redhat.com>
Patch from Sjoerd Simons <sjoerd.simons@collabora.co.uk>
* src/NetworkManager.c
src/nm-manager.c
src/nm-manager.h
- More explicitly make the NMManager a singleton
2008-08-04 Dan Williams <dcbw@redhat.com> 2008-08-04 Dan Williams <dcbw@redhat.com>
* libnm-util/nm-connection.c * libnm-util/nm-connection.c

View file

@ -303,7 +303,7 @@ main (int argc, char *argv[])
goto done; goto done;
} }
manager = nm_manager_new (); manager = nm_manager_get ();
if (manager == NULL) { if (manager == NULL) {
nm_error ("Failed to initialize the network manager."); nm_error ("Failed to initialize the network manager.");
goto done; goto done;

View file

@ -1353,49 +1353,54 @@ deferred_sync_devices (gpointer user_data)
} }
NMManager * NMManager *
nm_manager_new (void) nm_manager_get (void)
{ {
GObject *object; static NMManager *singleton = NULL;
NMManagerPrivate *priv; NMManagerPrivate *priv;
object = g_object_new (NM_TYPE_MANAGER, NULL); if (singleton)
priv = NM_MANAGER_GET_PRIVATE (object); return g_object_ref (singleton);
singleton = (NMManager *) g_object_new (NM_TYPE_MANAGER, NULL);
g_assert (singleton);
priv = NM_MANAGER_GET_PRIVATE (singleton);
dbus_g_connection_register_g_object (nm_dbus_manager_get_connection (priv->dbus_mgr), dbus_g_connection_register_g_object (nm_dbus_manager_get_connection (priv->dbus_mgr),
NM_DBUS_PATH, NM_DBUS_PATH,
object); G_OBJECT (singleton));
g_signal_connect (priv->dbus_mgr, g_signal_connect (priv->dbus_mgr,
"name-owner-changed", "name-owner-changed",
G_CALLBACK (nm_manager_name_owner_changed), G_CALLBACK (nm_manager_name_owner_changed),
NM_MANAGER (object)); singleton);
g_idle_add ((GSourceFunc) initial_get_connections, NM_MANAGER (object)); g_idle_add ((GSourceFunc) initial_get_connections, singleton);
priv->hal_mgr = nm_hal_manager_new (); priv->hal_mgr = nm_hal_manager_new ();
priv->sync_devices_id = g_idle_add (deferred_sync_devices, object); priv->sync_devices_id = g_idle_add (deferred_sync_devices, singleton);
g_signal_connect (priv->hal_mgr, g_signal_connect (priv->hal_mgr,
"udi-added", "udi-added",
G_CALLBACK (hal_manager_udi_added_cb), G_CALLBACK (hal_manager_udi_added_cb),
NM_MANAGER (object)); singleton);
g_signal_connect (priv->hal_mgr, g_signal_connect (priv->hal_mgr,
"udi-removed", "udi-removed",
G_CALLBACK (hal_manager_udi_removed_cb), G_CALLBACK (hal_manager_udi_removed_cb),
NM_MANAGER (object)); singleton);
g_signal_connect (priv->hal_mgr, g_signal_connect (priv->hal_mgr,
"rfkill-changed", "rfkill-changed",
G_CALLBACK (hal_manager_rfkill_changed_cb), G_CALLBACK (hal_manager_rfkill_changed_cb),
NM_MANAGER (object)); singleton);
g_signal_connect (priv->hal_mgr, g_signal_connect (priv->hal_mgr,
"hal-reappeared", "hal-reappeared",
G_CALLBACK (hal_manager_hal_reappeared_cb), G_CALLBACK (hal_manager_hal_reappeared_cb),
NM_MANAGER (object)); singleton);
return NM_MANAGER (object); return singleton;
} }
static void static void

View file

@ -52,7 +52,7 @@ typedef struct {
GType nm_manager_get_type (void); GType nm_manager_get_type (void);
NMManager *nm_manager_new (void); NMManager *nm_manager_get (void);
/* Device handling */ /* Device handling */