[gdm] daemon/gdm-manager.c: quit plymouth when xdmcp is the only allowed connection.



commit ef9977bf2118b2b7810a7669e128249d5ee91eab
Author: Yifan J <yfjiang suse com>
Date:   Tue Apr 10 14:17:30 2018 +0800

    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

 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 69bae91..7539acf 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));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]