[gdm] launch-environment: disconnect session signal handlers when destroyed
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm] launch-environment: disconnect session signal handlers when destroyed
- Date: Mon, 17 Mar 2014 20:11:53 +0000 (UTC)
commit 236102c0e17a1b13328dd86f60cc0495ebd3d03b
Author: Ray Strode <rstrode redhat com>
Date: Mon Mar 17 15:55:47 2014 -0400
launch-environment: disconnect session signal handlers when destroyed
The launch environment's session can actually live longer than the
environment itself. This is because the session creates internals
"conversation" objects that take a reference on the session, which
sometimes keeps it on life support.
This commit makes sure the session signal handlers for the launch
environment don't get run after the launch environment is destroyed.
https://bugzilla.gnome.org/show_bug.cgi?id=726380
daemon/gdm-launch-environment.c | 63 +++++++++++++++++++++-----------------
1 files changed, 35 insertions(+), 28 deletions(-)
---
diff --git a/daemon/gdm-launch-environment.c b/daemon/gdm-launch-environment.c
index 89af367..195bf59 100644
--- a/daemon/gdm-launch-environment.c
+++ b/daemon/gdm-launch-environment.c
@@ -470,34 +470,41 @@ gdm_launch_environment_start (GdmLaunchEnvironment *launch_environment)
launch_environment->priv->x11_display_is_local,
NULL);
- g_signal_connect (launch_environment->priv->session,
- "conversation-started",
- G_CALLBACK (on_conversation_started),
- launch_environment);
- g_signal_connect (launch_environment->priv->session,
- "conversation-stopped",
- G_CALLBACK (on_conversation_stopped),
- launch_environment);
- g_signal_connect (launch_environment->priv->session,
- "setup-complete",
- G_CALLBACK (on_session_setup_complete),
- launch_environment);
- g_signal_connect (launch_environment->priv->session,
- "session-opened",
- G_CALLBACK (on_session_opened),
- launch_environment);
- g_signal_connect (launch_environment->priv->session,
- "session-started",
- G_CALLBACK (on_session_started),
- launch_environment);
- g_signal_connect (launch_environment->priv->session,
- "session-exited",
- G_CALLBACK (on_session_exited),
- launch_environment);
- g_signal_connect (launch_environment->priv->session,
- "session-died",
- G_CALLBACK (on_session_died),
- launch_environment);
+ g_signal_connect_object (launch_environment->priv->session,
+ "conversation-started",
+ G_CALLBACK (on_conversation_started),
+ launch_environment,
+ 0);
+ g_signal_connect_object (launch_environment->priv->session,
+ "conversation-stopped",
+ G_CALLBACK (on_conversation_stopped),
+ launch_environment,
+ 0);
+ g_signal_connect_object (launch_environment->priv->session,
+ "setup-complete",
+ G_CALLBACK (on_session_setup_complete),
+ launch_environment,
+ 0);
+ g_signal_connect_object (launch_environment->priv->session,
+ "session-opened",
+ G_CALLBACK (on_session_opened),
+ launch_environment,
+ 0);
+ g_signal_connect_object (launch_environment->priv->session,
+ "session-started",
+ G_CALLBACK (on_session_started),
+ launch_environment,
+ 0);
+ g_signal_connect_object (launch_environment->priv->session,
+ "session-exited",
+ G_CALLBACK (on_session_exited),
+ launch_environment,
+ 0);
+ g_signal_connect_object (launch_environment->priv->session,
+ "session-died",
+ G_CALLBACK (on_session_died),
+ launch_environment,
+ 0);
gdm_session_start_conversation (launch_environment->priv->session, "gdm-launch-environment");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]