summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2015-03-17 08:38:23 -0400
committerRay Strode <rstrode@redhat.com>2015-03-19 20:26:35 -0400
commita93aedfad2198e12a21bf730cd39f035b1c34a10 (patch)
treeeea66030ed260d5c6a850722779c68af432d004c
parent5e36a56db16cacf474cfd87a9f290f88c90c0aea (diff)
downloadgdm-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.c60
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);
+ }
}
}