SHA256
1
0
forked from pool/gdm
gdm/gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch
Dominique Leuenberger 0fdc43b55c Accepting request 810058 from home:xiaoguang_wang:branches:GNOME:Factory
- Update gdm-add-runtime-option-to-disable-starting-X-server-as-u.patch:
  When user session reuses tty7 same as greeter session, gdm
  doesn't bring up the greeter session after switching from other
  tty to tty7 (bsc#1171290).

OBS-URL: https://build.opensuse.org/request/show/810058
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gdm?expand=0&rev=456
2020-06-04 11:44:23 +00:00

100 lines
4.0 KiB
Diff

From a19b51ad9e446948ba60c359641f6c4c14fec1da Mon Sep 17 00:00:00 2001
From: Michal Srb <msrb@suse.com>
Date: Fri, 26 Jan 2018 10:49:18 +0100
Subject: [PATCH] Add runtime option to disable starting X server as user
If the environmental variable GDM_DISABLE_USER_DISPLAY_SERVER is defined, the
X server will be started under root. The same way as if gdm was built with
--disable-user-display-server option.
This allows system to run X server under root if and only-if necessary.
---
Index: gdm-3.34.1/daemon/gdm-local-display-factory.c
===================================================================
--- gdm-3.34.1.orig/daemon/gdm-local-display-factory.c
+++ gdm-3.34.1/daemon/gdm-local-display-factory.c
@@ -231,11 +231,12 @@ gdm_local_display_factory_create_transie
g_debug ("GdmLocalDisplayFactory: Creating transient display");
-#ifdef ENABLE_USER_DISPLAY_SERVER
- display = gdm_local_display_new ();
- if (gdm_local_display_factory_use_wayland ())
- g_object_set (G_OBJECT (display), "session-type", "wayland", NULL);
-#else
+ if (getenv ("GDM_DISABLE_USER_DISPLAY_SERVER") == NULL) {
+ display = gdm_local_display_new ();
+ if (gdm_local_display_factory_use_wayland ())
+ g_object_set (G_OBJECT (display), "session-type", "wayland", NULL);
+ }
+
if (display == NULL) {
guint32 num;
@@ -243,7 +244,6 @@ gdm_local_display_factory_create_transie
display = gdm_legacy_display_new (num);
}
-#endif
g_object_set (display,
"seat-id", "seat0",
@@ -502,7 +502,7 @@ create_display (GdmLocalDisplayFactory *
g_debug ("GdmLocalDisplayFactory: Adding display on seat %s", seat_id);
#ifdef ENABLE_USER_DISPLAY_SERVER
- if (g_strcmp0 (seat_id, "seat0") == 0) {
+ if (getenv ("GDM_DISABLE_USER_DISPLAY_SERVER") == NULL && g_strcmp0 (seat_id, "seat0") == 0) {
display = gdm_local_display_new ();
if (session_type != NULL) {
g_object_set (G_OBJECT (display), "session-type", session_type, NULL);
@@ -772,6 +772,10 @@ on_vt_changed (GIOChannel *source,
g_debug ("GdmLocalDisplayFactory: VT changed from %u to %u",
previous_vt, factory->active_vt);
+ if (getenv ("GDM_DISABLE_USER_DISPLAY_SERVER") != NULL) {
+ return G_SOURCE_CONTINUE;
+ }
+
store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory));
/* if the old VT was running a wayland login screen kill it
Index: gdm-3.34.1/daemon/gdm-session.c
===================================================================
--- gdm-3.34.1.orig/daemon/gdm-session.c
+++ gdm-3.34.1/daemon/gdm-session.c
@@ -373,7 +373,11 @@ get_system_session_dirs (GdmSession *sel
#ifdef ENABLE_WAYLAND_SUPPORT
if (!self->ignore_wayland) {
#ifdef ENABLE_USER_DISPLAY_SERVER
- g_array_prepend_val (search_array, wayland_search_dir);
+ if (getenv ("GDM_DISABLE_USER_DISPLAY_SERVER") == NULL) {
+ g_array_prepend_val (search_array, wayland_search_dir);
+ } else {
+ g_array_append_val (search_array, wayland_search_dir);
+ }
for (i = 0; system_data_dirs[i]; i++) {
gchar *dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL);
@@ -3315,8 +3319,10 @@ gdm_session_get_display_mode (GdmSession
* right now. It will die with an error if logind devices
* are paused when handed out.
*/
- return GDM_SESSION_DISPLAY_MODE_NEW_VT;
-#else
+ if (getenv ("GDM_DISABLE_USER_DISPLAY_SERVER") == NULL) {
+ return GDM_SESSION_DISPLAY_MODE_NEW_VT;
+ }
+#endif
#ifdef ENABLE_WAYLAND_SUPPORT
/* Wayland sessions are for now assumed to run in a
@@ -3327,7 +3333,6 @@ gdm_session_get_display_mode (GdmSession
}
#endif
return GDM_SESSION_DISPLAY_MODE_REUSE_VT;
-#endif
}
void