Use CONS_GETINFO ioctl to get geometry of the current text mode instead of
TIOCGWINSZ. The former is more correct in this context.
This commit is contained in:
parent
c103d24a09
commit
a8e00009c5
@ -57,7 +57,7 @@ static int VGLSwitchPending;
|
||||
static int VGLOnDisplay;
|
||||
static unsigned int VGLCurWindow;
|
||||
static int VGLInitDone = 0;
|
||||
static struct winsize VGLOldWSize;
|
||||
static vid_info_t VGLOldVInfo;
|
||||
|
||||
void
|
||||
VGLEnd()
|
||||
@ -80,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] = VGLOldWSize.ws_col;
|
||||
size[1] = VGLOldWSize.ws_row;
|
||||
size[0] = VGLOldVInfo.mv_csz;
|
||||
size[1] = VGLOldVInfo.mv_rsz;
|
||||
size[2] = 16;
|
||||
ioctl(0, KDRASTER, size);
|
||||
}
|
||||
@ -146,9 +146,11 @@ VGLInit(int mode)
|
||||
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))
|
||||
if ((VGLOldMode >= M_VESA_BASE) && (VGLOldMode == M_VESA_800x600)) {
|
||||
VGLOldVInfo.size = sizeof(VGLOldVInfo);
|
||||
if (ioctl(0, CONS_GETINFO, &VGLOldVInfo))
|
||||
return -1;
|
||||
}
|
||||
|
||||
VGLDisplay = (VGLBitmap *)malloc(sizeof(VGLBitmap));
|
||||
if (VGLDisplay == NULL)
|
||||
|
Loading…
x
Reference in New Issue
Block a user