diff -rupN lightdm-1.2.2.org/src/vt.c lightdm-1.2.2-VTpatch/src/vt.c --- lightdm-1.2.2.org/src/vt.c 2012-04-19 01:29:23.000000000 +0200 +++ lightdm-1.2.2-VTpatch/src/vt.c 2012-06-20 10:33:47.898146259 +0200 @@ -95,7 +95,7 @@ vt_set_active (gint number) #endif } -static gboolean +gboolean vt_is_used (gint number) { GList *link; diff -rupN lightdm-1.2.2.org/src/vt.h lightdm-1.2.2-VTpatch/src/vt.h --- lightdm-1.2.2.org/src/vt.h 2012-04-19 01:29:23.000000000 +0200 +++ lightdm-1.2.2-VTpatch/src/vt.h 2012-06-20 10:35:48.130149351 +0200 @@ -14,6 +14,8 @@ #include +gboolean vt_is_used (gint number); + gint vt_get_active (void); gint vt_get_unused (void); diff -rupN lightdm-1.2.2.org/src/xserver-local.c lightdm-1.2.2-VTpatch/src/xserver-local.c --- lightdm-1.2.2.org/src/xserver-local.c 2012-04-19 01:29:23.000000000 +0200 +++ lightdm-1.2.2-VTpatch/src/xserver-local.c 2012-06-15 14:16:51.847135083 +0200 @@ -136,10 +136,17 @@ xserver_local_new (void) gint active_vt = vt_get_active (); if (active_vt >= vt_get_min ()) { - g_debug ("X server %s will replace Plymouth", xserver_get_address (XSERVER (self))); - self->priv->replacing_plymouth = TRUE; - self->priv->vt = active_vt; - plymouth_deactivate (); + if (vt_is_used (active_vt)) + { + g_debug ("Plymouth now seems to be running on VT %d, which is already used by another X server", active_vt); + } + else + { + g_debug ("X server %s will replace Plymouth", xserver_get_address (XSERVER (self))); + self->priv->replacing_plymouth = TRUE; + self->priv->vt = active_vt; + plymouth_deactivate (); + } } else g_debug ("Plymouth is running on VT %d, but this is less than the configured minimum of %d so not replacing it", active_vt, vt_get_min ());