[gdm/multi-stack: 6/35] disconnect signal handlers in destroy session
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm/multi-stack: 6/35] disconnect signal handlers in destroy session
- Date: Mon, 7 Mar 2011 22:25:25 +0000 (UTC)
commit d3b746c537a971907ad8d33a876a307367fa38bf
Author: Ray Strode <rstrode redhat com>
Date: Tue Jul 13 22:42:43 2010 -0400
disconnect signal handlers in destroy session
We don't want them firing as part of object destruction
daemon/gdm-simple-slave.c | 100 ++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 90 insertions(+), 10 deletions(-)
---
diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c
index 9ea5bc9..d37cc79 100644
--- a/daemon/gdm-simple-slave.c
+++ b/daemon/gdm-simple-slave.c
@@ -104,6 +104,7 @@ static void gdm_simple_slave_finalize (GObject *object);
G_DEFINE_TYPE (GdmSimpleSlave, gdm_simple_slave, GDM_TYPE_SLAVE)
static void create_new_session (GdmSimpleSlave *slave);
+static void destroy_session (GdmSimpleSlave *slave);
static void start_greeter (GdmSimpleSlave *slave);
static void
@@ -238,16 +239,6 @@ add_user_authorization (GdmSimpleSlave *slave,
}
static void
-destroy_session (GdmSimpleSlave *slave)
-{
- if (slave->priv->session != NULL) {
- gdm_session_close (GDM_SESSION (slave->priv->session));
- g_object_unref (slave->priv->session);
- slave->priv->session = NULL;
- }
-}
-
-static void
reset_session (GdmSimpleSlave *slave)
{
destroy_session (slave);
@@ -834,6 +825,95 @@ create_new_session (GdmSimpleSlave *slave)
}
static void
+destroy_session (GdmSimpleSlave *slave)
+{
+ if (slave->priv->session == NULL) {
+ return;
+ }
+
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_conversation_started),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_setup_complete),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_setup_failed),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_reset_complete),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_reset_failed),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_authenticated),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_authentication_failed),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_authorized),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_authorization_failed),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_accredited),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_accreditation_failed),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_opened),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_open_failed),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_info),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_problem),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_info_query),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_secret_info_query),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_started),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_exited),
+ slave);
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_died),
+ slave);
+#if 0
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_closed),
+ slave);
+#endif
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_session_selected_user_changed),
+ slave);
+
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_default_language_name_changed),
+ slave);
+
+ g_signal_handlers_disconnect_by_func (slave->priv->session,
+ G_CALLBACK (on_default_session_name_changed),
+ slave);
+
+ gdm_session_close (GDM_SESSION (slave->priv->session));
+ g_object_unref (slave->priv->session);
+ slave->priv->session = NULL;
+}
+
+static void
on_greeter_session_start (GdmGreeterSession *greeter,
GdmSimpleSlave *slave)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]