summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2018-08-31 14:33:58 -0400
committerRay Strode <rstrode@redhat.com>2018-08-31 16:43:21 -0400
commit2f3065ca0d73984f1317b0a1af431ca3d9252c7b (patch)
tree60d24e9345c46ada8e129d3c43bd7d9b5c2369ea
parent80b46e2bbb53842e7c5b568dd0237fb523a021ea (diff)
downloadgdm-2f3065ca0d73984f1317b0a1af431ca3d9252c7b.tar.gz
manager: start initial setup right away
We no longer restart the greeter as soon as it dies, since we start the greeter on demand. This means, we no longer need to defer starting initial setup until after the greeter respawns. Furthermore, it doesn't work anymore since it relied on the respawn to trigger. This commit removes that code and scaffolding and just starts initial setup directly. https://gitlab.gnome.org/GNOME/gdm/issues/415
-rw-r--r--daemon/gdm-manager.c67
1 files changed, 1 insertions, 66 deletions
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c
index 9b684b1f..b1e2072c 100644
--- a/daemon/gdm-manager.c
+++ b/daemon/gdm-manager.c
@@ -89,8 +89,6 @@ struct GdmManagerPrivate
GDBusConnection *connection;
GDBusObjectManagerServer *object_manager;
- StartUserSessionOperation *initial_login_operation;
-
#ifdef WITH_PLYMOUTH
guint plymouth_is_running : 1;
#endif
@@ -1251,42 +1249,6 @@ get_automatic_login_details (GdmManager *manager,
return enabled;
}
-static void
-maybe_start_pending_initial_login (GdmManager *manager,
- GdmDisplay *greeter_display)
-{
- StartUserSessionOperation *operation;
- char *greeter_seat_id = NULL;
- char *user_session_seat_id = NULL;
-
- /* There may be a user session waiting to be started.
- * This would happen if we couldn't start it earlier because
- * the login screen X server was coming up and two X servers
- * can't be started on the same seat at the same time.
- */
-
- if (manager->priv->initial_login_operation == NULL) {
- return;
- }
-
- operation = manager->priv->initial_login_operation;
-
- g_object_get (G_OBJECT (greeter_display),
- "seat-id", &greeter_seat_id,
- NULL);
- g_object_get (G_OBJECT (operation->session),
- "display-seat-id", &user_session_seat_id,
- NULL);
-
- if (g_strcmp0 (greeter_seat_id, user_session_seat_id) == 0) {
- start_user_session (manager, operation);
- manager->priv->initial_login_operation = NULL;
- }
-
- g_free (greeter_seat_id);
- g_free (user_session_seat_id);
-}
-
static const char *
get_username_for_greeter_display (GdmManager *manager,
GdmDisplay *display)
@@ -1464,17 +1426,6 @@ set_up_session (GdmManager *manager,
}
static void
-greeter_display_started (GdmManager *manager,
- GdmDisplay *display)
-{
- if (manager->priv->ran_once) {
- return;
- }
-
- maybe_start_pending_initial_login (manager, display);
-}
-
-static void
on_display_status_changed (GdmDisplay *display,
GParamSpec *arg1,
GdmManager *manager)
@@ -1515,10 +1466,6 @@ on_display_status_changed (GdmDisplay *display,
set_up_session (manager, display);
g_free (session_class);
}
-
- if (status == GDM_DISPLAY_MANAGED) {
- greeter_display_started (manager, display);
- }
break;
case GDM_DISPLAY_FAILED:
case GDM_DISPLAY_UNMANAGED:
@@ -1533,7 +1480,6 @@ on_display_status_changed (GdmDisplay *display,
if (!doing_initial_setup && (status == GDM_DISPLAY_FINISHED || g_strcmp0 (session_type, "x11") == 0)) {
manager->priv->ran_once = TRUE;
}
- maybe_start_pending_initial_login (manager, display);
break;
default:
break;
@@ -1640,7 +1586,6 @@ on_start_user_session (StartUserSessionOperation *operation)
gboolean migrated;
gboolean fail_if_already_switched = TRUE;
gboolean doing_initial_setup = FALSE;
- gboolean starting_user_session_right_away = TRUE;
GdmDisplay *display;
const char *session_id;
@@ -1688,14 +1633,6 @@ on_start_user_session (StartUserSessionOperation *operation)
gdm_display_stop_greeter_session (display);
gdm_display_unmanage (display);
gdm_display_finish (display);
-
- /* We can't start the user session until the finished display
- * starts to respawn (since starting an X server and bringing
- * one down at the same time is a no go)
- */
- g_assert (self->priv->initial_login_operation == NULL);
- self->priv->initial_login_operation = operation;
- starting_user_session_right_away = FALSE;
} else {
g_debug ("GdmManager: session has its display server, reusing our server for another login screen");
}
@@ -1721,9 +1658,7 @@ on_start_user_session (StartUserSessionOperation *operation)
session_id);
}
- if (starting_user_session_right_away) {
- start_user_session (operation->manager, operation);
- }
+ start_user_session (operation->manager, operation);
out:
return G_SOURCE_REMOVE;