[PATCH] bsd: Add support for -novtswitch.

Matthieu Herrb matthieu.herrb at laas.fr
Sat May 14 03:53:48 PDT 2011


On Fri, May 13, 2011 at 04:57:13PM +0200, Cyril Brulebois wrote:
> VT switching back to the initial VT is possible in the following case:
>   #if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
> 
> Make it possible to prevent that from happening if -novtswitch was
> passed, which should make the life of display manager developers easier,
> especially when it comes to handling multiple users.
> 
> X.Org Bug 37174 <http://bugs.freedesktop.org/show_bug.cgi?id=37174>
> 
> Signed-off-by: Cyril Brulebois <kibi at debian.org>

PCVT (and wscons in PCVT emulation mode) doesn't support having both a
getty process and the X server attached to the same VT. Running X
-noswitchvt will thus not work. 

At least on Net/OpenBSD, when using a display manager, we always
specify a free VT to use on X's command line,  forcing a VT switch
to avoid this.

I don't know know how syscons (FreeBSD) behaves when 2 processes are
attached to the same VT, and I also don't see what are the extra VT
switches that the PR is referring too. So may be syscons has some
specific behaviour that I'm not aware of ? 


> ---
>  hw/xfree86/os-support/bsd/bsd_init.c |    8 +++++++-
>  1 files changed, 7 insertions(+), 1 deletions(-)
> 
> Patch tested on a GNU/kFreeBSD VM, on top of 1.10.2rc1. Applies on top
> of master too, but not tested against it.
> 
> diff --git a/hw/xfree86/os-support/bsd/bsd_init.c b/hw/xfree86/os-support/bsd/bsd_init.c
> index 123eb17..77667bb 100644
> --- a/hw/xfree86/os-support/bsd/bsd_init.c
> +++ b/hw/xfree86/os-support/bsd/bsd_init.c
> @@ -41,6 +41,7 @@
>  #include <errno.h>
>  
>  static Bool KeepTty = FALSE;
> +static Bool VTSwitch = TRUE;
>  static int devConsoleFd = -1;
>  #if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
>  static int VTnum = -1;
> @@ -680,7 +681,7 @@ xf86CloseConsole()
>  	                   strerror(errno));
>          }
>  #endif
> -	if (initialVT != -1)
> +	if ((initialVT != -1) && VTSwitch)
>  		ioctl(xf86Info.consoleFd, VT_ACTIVATE, initialVT);
>          break;
>  #endif /* SYSCONS_SUPPORT || PCVT_SUPPORT */
> @@ -723,6 +724,11 @@ xf86ProcessArgument(int argc, char *argv[], int i)
>  		return 1;
>  	}
>  #if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
> +	if (!strcmp(argv[i], "-novtswitch"))
> +	{
> +		VTSwitch = FALSE;
> +		return 1;
> +	}
>  	if (!strcmp(argv[i], "-sharevts"))
>  	{	
>  		ShareVTs = TRUE;
> -- 
> 1.7.5.1
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel

-- 
Matthieu Herrb


More information about the xorg-devel mailing list