diff options
author | Ray Strode <rstrode@redhat.com> | 2013-12-16 16:57:19 -0500 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2013-12-16 16:58:36 -0500 |
commit | e19b881f9103940977c85229be4eac416d0fdc08 (patch) | |
tree | d5e7a00b10d47e5e480cb2947e6a763886e7df12 | |
parent | 8dd55e7dbe57423c5b93b800d33329b40dc81eec (diff) | |
download | gdm-e19b881f9103940977c85229be4eac416d0fdc08.tar.gz |
slave: fix infinite loop on shutdown
we stop something that calls stop in some circumstances.
This commit breaks the loop.
https://bugzilla.gnome.org/show_bug.cgi?id=712767
-rw-r--r-- | daemon/gdm-simple-slave.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/daemon/gdm-simple-slave.c b/daemon/gdm-simple-slave.c index 1fe58bce..d83216be 100644 --- a/daemon/gdm-simple-slave.c +++ b/daemon/gdm-simple-slave.c @@ -1668,8 +1668,23 @@ gdm_simple_slave_stop (GdmSlave *slave) GDM_SLAVE_CLASS (gdm_simple_slave_parent_class)->stop (slave); if (self->priv->greeter_environment != NULL) { - stop_greeter (self); - self->priv->greeter_environment = NULL; + g_signal_handlers_disconnect_by_func (G_OBJECT (self->priv->greeter_environment), + G_CALLBACK (on_greeter_environment_session_opened), + self); + g_signal_handlers_disconnect_by_func (G_OBJECT (self->priv->greeter_environment), + G_CALLBACK (on_greeter_environment_session_started), + self); + g_signal_handlers_disconnect_by_func (G_OBJECT (self->priv->greeter_environment), + G_CALLBACK (on_greeter_environment_session_stopped), + self); + g_signal_handlers_disconnect_by_func (G_OBJECT (self->priv->greeter_environment), + G_CALLBACK (on_greeter_environment_session_exited), + self); + g_signal_handlers_disconnect_by_func (G_OBJECT (self->priv->greeter_environment), + G_CALLBACK (on_greeter_environment_session_died), + self); + gdm_launch_environment_stop (GDM_LAUNCH_ENVIRONMENT (self->priv->greeter_environment)); + g_clear_object (&self->priv->greeter_environment); } if (self->priv->start_session_id > 0) { |