diff options
author | Yifan J <yfjiang@suse.com> | 2018-04-10 14:17:30 +0800 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2018-04-10 09:39:41 -0400 |
commit | 8d3889bafc4d4848bacdd61d57ae568add03bd60 (patch) | |
tree | 036a6a3f55a8c803673246d15d1ad87e3cdc8d07 | |
parent | 6b5c3691e4b881ee430b1749971facc92b141855 (diff) | |
download | gdm-8d3889bafc4d4848bacdd61d57ae568add03bd60.tar.gz |
daemon/gdm-manager.c: quit plymouth when xdmcp is the only allowed connection.
gdm is responsible to kill plymouth by spawning the "plymouth quit"
subprocesses in gdm-manager.c. The current code pathes of quiting
plymouth can never be reached when xdmcp is the only connection
allowed. Consequently in the case of
!show_local_greeter && xdmcp_enabled
the plymouth-quit-wait.service will never quit and the login prompt
will not popup without manual interference. This issue could be
more obviously observed when a downstream like openSUSE which
allows a customized sysconfig to switch the corresponding two
options on a headless server (s390), where the setup is usually:
DISPLAYMANAGER_REMOTE_ACCESS="yes"
DISPLAYMANAGER_STARTS_XSERVER="no"
The proposed patch handles this edge case by quit plymouth immediately
when the condition is detected.
https://bugzilla.gnome.org/show_bug.cgi?id=795120
-rw-r--r-- | daemon/gdm-manager.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c index 69bae91b..7539acf1 100644 --- a/daemon/gdm-manager.c +++ b/daemon/gdm-manager.c @@ -2510,6 +2510,13 @@ gdm_manager_start (GdmManager *manager) #ifdef HAVE_LIBXDMCP /* Accept remote connections */ if (manager->priv->xdmcp_enabled) { +#ifdef WITH_PLYMOUTH + /* Quit plymouth if xdmcp is the only display */ + if (!manager->priv->show_local_greeter && manager->priv->plymouth_is_running) { + plymouth_quit_with_transition (); + manager->priv->plymouth_is_running = FALSE; + } +#endif if (manager->priv->xdmcp_factory != NULL) { g_debug ("GdmManager: Accepting XDMCP connections..."); gdm_display_factory_start (GDM_DISPLAY_FACTORY (manager->priv->xdmcp_factory)); |