diff options
author | Ray Strode <rstrode@redhat.com> | 2015-03-17 08:38:23 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2015-03-19 20:26:35 -0400 |
commit | a93aedfad2198e12a21bf730cd39f035b1c34a10 (patch) | |
tree | eea66030ed260d5c6a850722779c68af432d004c | |
parent | 5e36a56db16cacf474cfd87a9f290f88c90c0aea (diff) | |
download | gdm-a93aedfad2198e12a21bf730cd39f035b1c34a10.tar.gz |
manager: split automatic login handling out of set_up_greeter_session
Automatic login handling doesn't have a whole lot to do with the
greeter session, so having it in setup_greeter_session is a little
weird.
This commit splits set_up_greeter_session into two functions,
set_up_greeter_session and set_up_automatic_login_session, and then
changes the caller to call the right one depending on if the display
should do automatic login..
https://bugzilla.gnome.org/show_bug.cgi?id=746492
-rw-r--r-- | daemon/gdm-manager.c | 60 |
1 files changed, 34 insertions, 26 deletions
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c index e370546e..f3a0fbf9 100644 --- a/daemon/gdm-manager.c +++ b/daemon/gdm-manager.c @@ -1512,23 +1512,35 @@ get_username_for_greeter_display (GdmManager *manager, } static void +set_up_automatic_login_session (GdmManager *manager, + GdmDisplay *display) +{ + GdmSession *session; + gboolean is_initial; + + g_object_set (G_OBJECT (display), "session-class", "user", NULL); + g_object_set (G_OBJECT (display), "session-type", NULL, NULL); + + /* 0 is root user; since the daemon talks to the session object + * directly, itself, for automatic login + */ + session = create_embryonic_user_session_for_display (manager, display, 0); + + g_object_get (G_OBJECT (display), "is-initial", &is_initial, NULL); + g_object_set (G_OBJECT (session), "display-is-initial", is_initial, NULL); + + g_debug ("GdmManager: Starting automatic login conversation"); + gdm_session_start_conversation (session, "gdm-autologin"); +} + +static void set_up_greeter_session (GdmManager *manager, GdmDisplay *display) { const char *allowed_user; struct passwd *passwd_entry; - gboolean will_autologin; - GdmSession *session; - will_autologin = display_should_autologin (manager, display); - - if (!will_autologin) { - allowed_user = get_username_for_greeter_display (manager, display); - } else { - g_object_set (G_OBJECT (display), "session-class", "user", NULL); - g_object_set (G_OBJECT (display), "session-type", NULL, NULL); - allowed_user = "root"; - } + allowed_user = get_username_for_greeter_display (manager, display); if (!gdm_get_pwent_for_name (allowed_user, &passwd_entry)) { g_warning ("GdmManager: couldn't look up username %s", @@ -1538,20 +1550,8 @@ set_up_greeter_session (GdmManager *manager, return; } - session = create_embryonic_user_session_for_display (manager, display, passwd_entry->pw_uid); - - if (!will_autologin) { - gdm_display_start_greeter_session (display); - } else { - gboolean is_initial; - - g_debug ("GdmManager: Starting automatic login conversation"); - - g_object_get (G_OBJECT (display), "is-initial", &is_initial, NULL); - g_object_set (G_OBJECT (session), "display-is-initial", is_initial, NULL); - - gdm_session_start_conversation (session, "gdm-autologin"); - } + create_embryonic_user_session_for_display (manager, display, passwd_entry->pw_uid); + gdm_display_start_greeter_session (display); } static void @@ -1585,7 +1585,15 @@ on_display_status_changed (GdmDisplay *display, "session-class", &session_class, NULL); if (g_strcmp0 (session_class, "greeter") == 0) { - set_up_greeter_session (manager, display); + gboolean will_autologin; + + will_autologin = display_should_autologin (manager, display); + + if (will_autologin) { + set_up_automatic_login_session (manager, display); + } else { + set_up_greeter_session (manager, display); + } } } |