relied on the generic VGA layer to restore text console fonts for us
when shutting down the server or VT switching back to the text console.
This has worked rather well but it has some downsides on Linux: a. Many
people use fbdev as console text mode. In this case it is not necessary
to save/restore console fonts as the console is running in graphics
mode anyway. b. Some architectures don't have a fbdev console but
require a full POST of even the primary card (ie. IA64). This posting
has to take place before we even have a chance to save anything.
Therefore the fonts we save are the once written to the chip by POST,
not what has been programmed by the user. c. Certain chipsets utilize
the BIOS to perform mode setting. This may interfer with the vga
save/restore font function in a strange way. It would therefore be
preferrable to let the OS - which has been used to set up the font in
the first place - take care of saving/restoring the data. I will attach
a patch which will do so for Linux. To make this fully functional a
small patch needs to be applied to the Linux kernel. To disable this
feature add: #define DoOSFontRestore NO to your host.def. (Bugzilla
#2277)
89 lines
2.3 KiB
C
89 lines
2.3 KiB
C
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/VTsw_usl.c,v 3.1.4.1 1998/06/05 16:23:21 dawes Exp $ */
|
|
/*
|
|
* Copyright 1993 by David Wexelblat <dwex@XFree86.org>
|
|
*
|
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
|
* documentation for any purpose is hereby granted without fee, provided that
|
|
* the above copyright notice appear in all copies and that both that
|
|
* copyright notice and this permission notice appear in supporting
|
|
* documentation, and that the name of David Wexelblat not be used in
|
|
* advertising or publicity pertaining to distribution of the software without
|
|
* specific, written prior permission. David Wexelblat makes no representations
|
|
* about the suitability of this software for any purpose. It is provided
|
|
* "as is" without express or implied warranty.
|
|
*
|
|
* DAVID WEXELBLAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
|
* EVENT SHALL DAVID WEXELBLAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
|
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
|
* DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
* PERFORMANCE OF THIS SOFTWARE.
|
|
*
|
|
*/
|
|
/* $XConsortium: VTsw_usl.c /main/3 1996/02/21 17:53:28 kaleb $ */
|
|
|
|
#include "X.h"
|
|
|
|
#include "xf86.h"
|
|
#include "xf86Priv.h"
|
|
#include "xf86_OSlib.h"
|
|
|
|
#ifdef OSHEADER
|
|
# include OSHEADER
|
|
#endif
|
|
|
|
/*
|
|
* Handle the VT-switching interface for OSs that use USL-style ioctl()s
|
|
* (the sysv, sco, and linux subdirs).
|
|
*/
|
|
|
|
/*
|
|
* This function is the signal handler for the VT-switching signal. It
|
|
* is only referenced inside the OS-support layer.
|
|
*/
|
|
void
|
|
xf86VTRequest(int sig)
|
|
{
|
|
signal(sig, (void(*)(int))xf86VTRequest);
|
|
xf86Info.vtRequestsPending = TRUE;
|
|
return;
|
|
}
|
|
|
|
Bool
|
|
xf86VTSwitchPending()
|
|
{
|
|
return(xf86Info.vtRequestsPending ? TRUE : FALSE);
|
|
}
|
|
|
|
Bool
|
|
xf86VTSwitchAway()
|
|
{
|
|
xf86Info.vtRequestsPending = FALSE;
|
|
if (ioctl(xf86Info.consoleFd, VT_RELDISP, 1) < 0)
|
|
{
|
|
return(FALSE);
|
|
}
|
|
else
|
|
{
|
|
#ifdef OSSWITCHAWAY
|
|
OSSWITCHAWAY;
|
|
#endif
|
|
return(TRUE);
|
|
}
|
|
}
|
|
|
|
Bool
|
|
xf86VTSwitchTo()
|
|
{
|
|
xf86Info.vtRequestsPending = FALSE;
|
|
if (ioctl(xf86Info.consoleFd, VT_RELDISP, VT_ACKACQ) < 0)
|
|
{
|
|
return(FALSE);
|
|
}
|
|
else
|
|
{
|
|
return(TRUE);
|
|
}
|
|
}
|