[gdm/wip/xserver-in-session: 6/9] session: start login screen using gdm-x-session wrapper
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdm/wip/xserver-in-session: 6/9] session: start login screen using gdm-x-session wrapper
- Date: Fri, 13 Feb 2015 21:57:27 +0000 (UTC)
commit 395d260afd0135925e615bec7c85335526f3610b
Author: Ray Strode <rstrode redhat com>
Date: Fri Jan 23 13:59:14 2015 -0500
session: start login screen using gdm-x-session wrapper
Since we have the wrapper, let's use it for the login screen
to and get rid of GdmServer.
daemon/gdm-local-display.c | 101 +-------------------------------------------
daemon/gdm-session.c | 18 ++++++--
2 files changed, 15 insertions(+), 104 deletions(-)
---
diff --git a/daemon/gdm-local-display.c b/daemon/gdm-local-display.c
index 05fa4a8..a761cf8 100644
--- a/daemon/gdm-local-display.c
+++ b/daemon/gdm-local-display.c
@@ -50,8 +50,6 @@
struct GdmLocalDisplayPrivate
{
GdmDBusLocalDisplay *skeleton;
-
- GdmServer *server;
};
static void gdm_local_display_class_init (GdmLocalDisplayClass *klass);
@@ -84,7 +82,6 @@ gdm_local_display_finalize (GObject *object)
GdmLocalDisplay *display = GDM_LOCAL_DISPLAY (object);
g_clear_object (&display->priv->skeleton);
- g_clear_object (&display->priv->server);
G_OBJECT_CLASS (gdm_local_display_parent_class)->finalize (object);
}
@@ -117,103 +114,9 @@ gdm_local_display_prepare (GdmDisplay *display)
}
static void
-on_server_ready (GdmServer *server,
- GdmLocalDisplay *self)
-{
- gboolean ret;
-
- ret = gdm_display_connect (GDM_DISPLAY (self));
-
- if (!ret) {
- g_debug ("GdmDisplay: could not connect to display");
- gdm_display_unmanage (GDM_DISPLAY (self));
- } else {
- g_debug ("GdmDisplay: connected to display");
- g_object_set (G_OBJECT (self), "status", GDM_DISPLAY_MANAGED, NULL);
- }
-}
-
-static void
-on_server_exited (GdmServer *server,
- int exit_code,
- GdmDisplay *self)
-{
- g_debug ("GdmDisplay: server exited with code %d\n", exit_code);
-
- gdm_display_unmanage (GDM_DISPLAY (self));
-}
-
-static void
-on_server_died (GdmServer *server,
- int signal_number,
- GdmDisplay *self)
+gdm_local_display_start_server (GdmDisplay *self)
{
- g_debug ("GdmDisplay: server died with signal %d, (%s)",
- signal_number,
- g_strsignal (signal_number));
-
- gdm_display_unmanage (GDM_DISPLAY (self));
-}
-
-static void
-gdm_local_display_start_server (GdmDisplay *display)
-{
- GdmLocalDisplay *self = GDM_LOCAL_DISPLAY (display);
- char *display_name;
- char *auth_file;
- char *seat_id;
- gboolean is_initial;
- gboolean res;
- gboolean disable_tcp;
-
- g_object_get (G_OBJECT (self),
- "x11-display-name", &display_name,
- "x11-authority-file", &auth_file,
- "seat-id", &seat_id,
- "is-initial", &is_initial,
- NULL);
-
- self->priv->server = gdm_server_new (display_name, seat_id, auth_file, is_initial);
-
- g_free (display_name);
- g_free (auth_file);
- g_free (seat_id);
-
- disable_tcp = TRUE;
- if (gdm_settings_direct_get_boolean (GDM_KEY_DISALLOW_TCP, &disable_tcp)) {
- g_object_set (self->priv->server,
- "disable-tcp", disable_tcp,
- NULL);
- }
-
- g_signal_connect (self->priv->server,
- "exited",
- G_CALLBACK (on_server_exited),
- self);
- g_signal_connect (self->priv->server,
- "died",
- G_CALLBACK (on_server_died),
- self);
- g_signal_connect (self->priv->server,
- "ready",
- G_CALLBACK (on_server_ready),
- self);
-
- res = gdm_server_start (self->priv->server);
- if (! res) {
- g_warning (_("Could not start the X "
- "server (your graphical environment) "
- "due to an internal error. "
- "Please contact your system administrator "
- "or check your syslog to diagnose. "
- "In the meantime this display will be "
- "disabled. Please restart GDM when "
- "the problem is corrected."));
- gdm_display_unmanage (GDM_DISPLAY (self));
- }
-
- g_debug ("GdmDisplay: Started X server");
-
+ g_object_set (G_OBJECT (self), "status", GDM_DISPLAY_MANAGED, NULL);
}
static void
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index fb1e0f0..93be389 100644
--- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c
@@ -2650,7 +2650,16 @@ gdm_session_start_session (GdmSession *self,
g_free (command);
} else {
- program = g_strdup (self->priv->selected_program);
+ GdmSessionDisplayMode display_mode;
+
+ display_mode = gdm_session_get_display_mode (self);
+
+ if (display_mode == GDM_SESSION_DISPLAY_MODE_LOGIND_MANAGED) {
+ program = g_strdup_printf (LIBEXECDIR "/gdm-x-session \"%s\"",
+ self->priv->selected_program);
+ } else {
+ program = g_strdup (self->priv->selected_program);
+ }
}
set_up_session_environment (self);
@@ -2950,12 +2959,11 @@ gdm_session_get_display_mode (GdmSession *self)
return GDM_SESSION_DISPLAY_MODE_REUSE_VT;
}
- /* The X session used for the login screen uses the
- * X server started up by the slave, so it should be
- * reuse VT
+ /* The X session used for the login screen is created
+ * implicitly now and managed by logind.
*/
if (self->priv->is_program_session) {
- return GDM_SESSION_DISPLAY_MODE_REUSE_VT;
+ return GDM_SESSION_DISPLAY_MODE_LOGIND_MANAGED;
}
/* user based X sessions start on a new VT now and are managed
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]