diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2013-07-19 15:19:59 +1200 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2013-07-19 15:19:59 +1200 |
commit | b31f70266adee7682c1323005dc2051e1ac5d5f2 (patch) | |
tree | 9603246cb446879a2709a2deea5ce14bb9340710 /src/greeter.c | |
parent | ad598c138c1770ec859d5f5e15c979f3f98b4ff8 (diff) | |
download | lightdm-git-b31f70266adee7682c1323005dc2051e1ac5d5f2.tar.gz |
Make greeter shutdown more reliable fixing tests
Diffstat (limited to 'src/greeter.c')
-rw-r--r-- | src/greeter.c | 13 |
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] = |