summaryrefslogtreecommitdiff
path: root/src/greeter.c
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2013-07-19 15:19:59 +1200
committerRobert Ancell <robert.ancell@canonical.com>2013-07-19 15:19:59 +1200
commitb31f70266adee7682c1323005dc2051e1ac5d5f2 (patch)
tree9603246cb446879a2709a2deea5ce14bb9340710 /src/greeter.c
parentad598c138c1770ec859d5f5e15c979f3f98b4ff8 (diff)
downloadlightdm-git-b31f70266adee7682c1323005dc2051e1ac5d5f2.tar.gz
Make greeter shutdown more reliable fixing tests
Diffstat (limited to 'src/greeter.c')
-rw-r--r--src/greeter.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/greeter.c b/src/greeter.c
index 2ef4dcdc..16b9ea44 100644
--- a/src/greeter.c
+++ b/src/greeter.c
@@ -873,6 +873,18 @@ greeter_real_start_session (Greeter *greeter, SessionType type, const gchar *ses
}
static void
+greeter_stop (Session *session)
+{
+ Greeter *greeter = GREETER (session);
+
+ /* Stop any events occurring after we've stopped */
+ if (greeter->priv->authentication_session)
+ g_signal_handlers_disconnect_matched (greeter->priv->authentication_session, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, greeter);
+
+ SESSION_CLASS (greeter_parent_class)->stop (session);
+}
+
+static void
greeter_init (Greeter *greeter)
{
greeter->priv = G_TYPE_INSTANCE_GET_PRIVATE (greeter, GREETER_TYPE, GreeterPrivate);
@@ -915,6 +927,7 @@ greeter_class_init (GreeterClass *klass)
klass->create_session = greeter_real_create_session;
klass->start_session = greeter_real_start_session;
session_class->start = greeter_start;
+ session_class->stop = greeter_stop;
object_class->finalize = greeter_finalize;
signals[CONNECTED] =