diff options
author | Laércio de Sousa <lbsousajr@gmail.com> | 2015-04-27 07:49:08 -0300 |
---|---|---|
committer | Laércio de Sousa <lbsousajr@gmail.com> | 2015-04-27 07:49:08 -0300 |
commit | c4a6edd5988f546ddd206b8187838093612eab37 (patch) | |
tree | 31b8caf1e78a1378c080945eab717427d496be91 | |
parent | b81bc38113c5452bd863b5e817107f00196aa619 (diff) | |
download | lightdm-gtk-greeter-git-c4a6edd5988f546ddd206b8187838093612eab37.tar.gz |
Avoid authenticating same use twice on timed autologin.
-rw-r--r-- | src/lightdm-gtk-greeter.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/lightdm-gtk-greeter.c b/src/lightdm-gtk-greeter.c index c701639..d1025d2 100644 --- a/src/lightdm-gtk-greeter.c +++ b/src/lightdm-gtk-greeter.c @@ -2305,10 +2305,26 @@ show_message_cb (LightDMGreeter *greeter, const gchar *text, LightDMMessageType } static void -autologin_cb (LightDMGreeter *greeter) +timed_autologin_cb (LightDMGreeter *greeter) { - prompted = TRUE; - lightdm_greeter_authenticate_autologin (greeter); + if (lightdm_greeter_get_is_authenticated (greeter)) + { + /* Configured autologin user may be already selected in user list. */ + if (lightdm_greeter_get_authentication_user (greeter)) + /* Selected user matches configured autologin-user option. */ + start_session (); + else if (lightdm_greeter_get_autologin_guest_hint (greeter)) + /* "Guest session" is selected and autologin-guest is enabled. */ + start_session (); + else if (lightdm_greeter_get_autologin_user_hint (greeter)) + { + /* "Guest session" is selected, but autologin-user is configured. */ + prompted = TRUE; + start_authentication (lightdm_greeter_get_autologin_user_hint (greeter)); + } + } + else + lightdm_greeter_authenticate_autologin (greeter); } static void @@ -2685,7 +2701,7 @@ main (int argc, char **argv) g_signal_connect (greeter, "show-prompt", G_CALLBACK (show_prompt_cb), NULL); g_signal_connect (greeter, "show-message", G_CALLBACK (show_message_cb), NULL); g_signal_connect (greeter, "authentication-complete", G_CALLBACK (authentication_complete_cb), NULL); - g_signal_connect (greeter, "autologin-timer-expired", G_CALLBACK (autologin_cb), NULL); + g_signal_connect (greeter, "autologin-timer-expired", G_CALLBACK (timed_autologin_cb), NULL); if (!lightdm_greeter_connect_sync (greeter, NULL)) return EXIT_FAILURE; |