summary refs log tree commit diff
path: root/src/nm-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nm-manager.c')
-rw-r--r--src/nm-manager.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/nm-manager.c b/src/nm-manager.c
index cc52ea78..a1e4fb4f 100644
--- a/src/nm-manager.c
+++ b/src/nm-manager.c
@@ -4880,7 +4880,7 @@ nm_manager_init (NMManager *manager)
 	                  G_CALLBACK (dbus_connection_changed_cb),
 	                  manager);
 
-	priv->vpn_manager = nm_vpn_manager_get ();
+	priv->vpn_manager = g_object_ref (nm_vpn_manager_get ());
 
 	g_connection = nm_dbus_manager_get_connection (priv->dbus_mgr);
 
@@ -4908,10 +4908,10 @@ nm_manager_init (NMManager *manager)
 		nm_log_warn (LOGD_AUTOIP4, "could not initialize avahi-autoipd D-Bus proxy");
 
 	/* sleep/wake handling */
-	priv->sleep_monitor = nm_sleep_monitor_get ();
-	g_signal_connect (priv->sleep_monitor, "sleeping",
+	priv->sleep_monitor = g_object_ref (nm_sleep_monitor_get ());
+	g_signal_connect (priv->sleep_monitor, NM_SLEEP_MONITOR_SLEEPING,
 	                  G_CALLBACK (sleeping_cb), manager);
-	g_signal_connect (priv->sleep_monitor, "resuming",
+	g_signal_connect (priv->sleep_monitor, NM_SLEEP_MONITOR_RESUMING,
 	                  G_CALLBACK (resuming_cb), manager);
 
 	/* Listen for authorization changes */
@@ -5142,7 +5142,11 @@ dispose (GObject *object)
 	}
 
 	g_clear_object (&priv->aipd_proxy);
-	g_clear_object (&priv->sleep_monitor);
+	if (priv->sleep_monitor) {
+		g_signal_handlers_disconnect_by_func (priv->sleep_monitor, sleeping_cb, manager);
+		g_signal_handlers_disconnect_by_func (priv->sleep_monitor, resuming_cb, manager);
+		g_clear_object (&priv->sleep_monitor);
+	}
 
 	if (priv->fw_monitor) {
 		g_signal_handlers_disconnect_by_func (priv->fw_monitor, firmware_dir_changed, manager);