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:
parent
acdb2839d6
commit
ac6468bd08
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=71643
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user