Don't hardcode geometry of VESA_800x600 raster text mode (80x25). Instead save

actual geometry before switching to the graphics mode.
This commit is contained in:
Maxim Sobolev 2001-01-25 16:58:46 +00:00
parent acdb2839d6
commit ac6468bd08
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=71643

View File

@ -57,6 +57,7 @@ static int VGLSwitchPending;
static int VGLOnDisplay;
static unsigned int VGLCurWindow;
static int VGLInitDone = 0;
static struct winsize VGLOldWSize;
void
VGLEnd()
@ -79,8 +80,8 @@ struct vt_mode smode;
ioctl(0, _IO('V', VGLOldMode - M_VESA_BASE), 0);
if (VGLOldMode == M_VESA_800x600) {
int size[3];
size[0] = 80;
size[1] = 25;
size[0] = VGLOldWSize.ws_col;
size[1] = VGLOldWSize.ws_row;
size[2] = 16;
ioctl(0, KDRASTER, size);
}
@ -144,6 +145,11 @@ VGLInit(int mode)
if (ioctl(0, CONS_MODEINFO, &VGLModeInfo)) /* FBIO_MODEINFO */
return -1;
/* If current mode is VESA_800x600 then save its geometry to restore later */
if ((VGLOldMode >= M_VESA_BASE) && (VGLOldMode == M_VESA_800x600))
if (ioctl(0, TIOCGWINSZ, &VGLOldWSize))
return -1;
VGLDisplay = (VGLBitmap *)malloc(sizeof(VGLBitmap));
if (VGLDisplay == NULL)
return -2;