]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Don't replace Plymouth if it isn't running on a valid VT
authorYves-Alexis Perez <corsac@debian.org>
Wed, 6 Jul 2011 08:00:38 +0000 (18:00 +1000)
committerRobert Ancell <robert.ancell@canonical.com>
Wed, 6 Jul 2011 08:00:38 +0000 (18:00 +1000)
NEWS
src/display-manager.c
src/vt.c
src/vt.h

diff --git a/NEWS b/NEWS
index eb89b48230ded1bdea0453f32bee6a565dad65c6..a0bc6bc1f52fc65db3c131557f913a6bafbfd716 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,7 @@
+Overview of changes in lightdm 0.4.3
+
+    * Don't replace Plymouth if it isn't running on a valid VT
+
 Overview of changes in lightdm 0.4.2
 
     * Fix errors communicating with PAM
index 405bc5553e3faf45459cbd0e4130a69c8d054428..c91ec490820c9ddd8bf740a55e129558fe97bdae 100644 (file)
@@ -631,7 +631,7 @@ display_manager_start (DisplayManager *manager)
     {
         Display *display;
         gchar *value, *default_user, *display_name;
-        gint vt, user_timeout;
+        gint vt = -1, user_timeout;
         XServer *xserver;
         gboolean replaces_plymouth = FALSE;
 
@@ -645,12 +645,21 @@ display_manager_start (DisplayManager *manager)
         /* Replace Plymouth */
         if (plymouth_on_active_vt && !plymouth_being_replaced)
         {
-            g_debug ("Display %s will replace Plymouth", display_name);
-            plymouth_being_replaced = TRUE;
-            replaces_plymouth = TRUE;
             vt = vt_get_active ();
+            if (vt > 0 && vt < vt_get_min ())
+            {
+                g_debug ("Plymouth is running on VT %d, but this is less than the configured minimum of %d so not replacing it", vt, vt_get_min ());
+                vt = -1;
+            }
+            else if (vt > 0)
+            {              
+                g_debug ("Display %s will replace Plymouth", display_name);
+                plymouth_being_replaced = TRUE;
+                replaces_plymouth = TRUE;
+            }
         }
-        else
+
+        if (vt < 0)
             vt = vt_get_unused ();
 
         g_debug ("Starting on /dev/tty%d", vt);          
index 66f4802da16eeff86a138a960c6187c182b7bb28..78d72a7cbe88739a402fc0a7c9afd85fdce5be4d 100644 (file)
--- a/src/vt.c
+++ b/src/vt.c
@@ -74,7 +74,7 @@ vt_is_used (gint number)
 }
 
 gint
-vt_get_unused (void)
+vt_get_min (void)
 {
     gint number;
 
@@ -82,6 +82,15 @@ vt_get_unused (void)
     if (number < 1)
         number = 1;
 
+    return number;
+}
+
+gint
+vt_get_unused (void)
+{
+    gint number;
+
+    number = vt_get_min ();
     while (vt_is_used (number))
         number++;
 
index 31766f35c6ea7d9f3fb6a3cf74dca4c290f60ff5..4396f1a372d522f68927b5f09504d9f6bdbe9523 100644 (file)
--- a/src/vt.h
+++ b/src/vt.h
@@ -18,6 +18,8 @@ gint vt_get_active (void);
 
 gint vt_get_unused (void);
 
+gint vt_get_min (void);
+
 void vt_release (gint number);
 
 void vt_set_active (gint number);