diff options
author | Ray Strode <rstrode@redhat.com> | 2011-09-09 09:52:22 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2011-09-09 15:00:22 -0400 |
commit | 6849f6f3b8a199bed5427b8d6f1e2dedbe035d6c (patch) | |
tree | 3d4496e577a510f11fa20276813ea86fe2256556 /daemon/gdm-xdmcp-chooser-slave.c | |
parent | d5aa5a1e0e2b2648acafa5534c75fc0ab0e4055b (diff) | |
download | gdm-6849f6f3b8a199bed5427b8d6f1e2dedbe035d6c.tar.gz |
daemon: stop greeter session not greeter worker
Since changing the greeter to run in its own PAM
session, we've started killing the worker process
instead of the session process right before the
user's session is started.
This is wrong, because it means we don't give the
greeter session time to kill itself in an orderly
way before we rip away its session bus.
This commit changes the welcome session stop function
to kill the pid of the welcome session instead of
the pid of its worker parent. This change requires
reinstrumenting all callers of gdm_welcome_session_stop
to not free the session until the "stopped" signal
following gdm_welcome_session_stop.
https://bugzilla.gnome.org/show_bug.cgi?id=658481
Diffstat (limited to 'daemon/gdm-xdmcp-chooser-slave.c')
-rw-r--r-- | daemon/gdm-xdmcp-chooser-slave.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/daemon/gdm-xdmcp-chooser-slave.c b/daemon/gdm-xdmcp-chooser-slave.c index 23d9e4fd..fee36303 100644 --- a/daemon/gdm-xdmcp-chooser-slave.c +++ b/daemon/gdm-xdmcp-chooser-slave.c @@ -99,6 +99,9 @@ on_chooser_session_stop (GdmChooserSession *chooser, { g_debug ("GdmXdmcpChooserSlave: Chooser stopped"); gdm_slave_stopped (GDM_SLAVE (slave)); + + g_object_unref (GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser); + GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser = NULL; } static void @@ -308,8 +311,6 @@ gdm_xdmcp_chooser_slave_stop (GdmSlave *slave) if (GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser != NULL) { gdm_welcome_session_stop (GDM_WELCOME_SESSION (GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser)); - g_object_unref (GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser); - GDM_XDMCP_CHOOSER_SLAVE (slave)->priv->chooser = NULL; } return TRUE; |