diff options
author | Michael Terry <michael.terry@canonical.com> | 2014-04-28 10:10:26 -0400 |
---|---|---|
committer | Michael Terry <michael.terry@canonical.com> | 2014-04-28 10:10:26 -0400 |
commit | 439afdecf3ba9d32f1affd289b10ad94e2ceedb2 (patch) | |
tree | e27020baed4ee6370fee8fa3c488da2e1d539653 | |
parent | 4d33c308391815acde2d402f6b9faa619d47beba (diff) | |
download | lightdm-439afdecf3ba9d32f1affd289b10ad94e2ceedb2.tar.gz |
When looking for an existing greeter, make sure it's a resettable one
-rw-r--r-- | src/seat.c | 28 |
1 files changed, 21 insertions, 7 deletions
@@ -468,6 +468,22 @@ find_greeter_session (Seat *seat) return NULL; } +static Greeter * +find_resettable_greeter (Seat *seat) +{ + GList *link; + + for (link = seat->priv->sessions; link; link = link->next) + { + Session *session = link->data; + if (!session_get_is_stopping (session) && IS_GREETER (session) && + greeter_get_resettable (GREETER (session))) + return GREETER (session); + } + + return NULL; +} + static void set_greeter_hints (Seat *seat, Greeter *greeter_session) { @@ -486,7 +502,7 @@ switch_to_greeter_from_failed_session (Seat *seat, Session *session) gboolean existing = FALSE; /* Switch to greeter if one open */ - greeter_session = find_greeter_session (seat); + greeter_session = find_resettable_greeter (seat); if (greeter_session) { l_debug (seat, "Switching to existing greeter"); @@ -1388,10 +1404,8 @@ switch_authentication_complete_cb (Session *session, Seat *seat) session_stop (session); - /* See if we already have a greeter up and reuse it if so. Which will only - happen if the greeter marked itself as resettable and we thus didn't - kill it when a user session started */ - greeter_session = find_greeter_session (seat); + /* See if we already have a greeter up and reuse it if so */ + greeter_session = find_resettable_greeter (seat); if (greeter_session) { l_debug (seat, "Switching to existing greeter to authenticate session"); @@ -1517,8 +1531,8 @@ seat_lock (Seat *seat, const gchar *username) l_debug (seat, "Locking"); - /* Switch to greeter if one open (only true if it's a resettable greeter) */ - greeter_session = find_greeter_session (seat); + /* Switch to greeter we can reuse */ + greeter_session = find_resettable_greeter (seat); if (greeter_session) { l_debug (seat, "Switching to existing greeter"); |