scrolling bug fix
This commit is contained in:
parent
247d8feeec
commit
8d23c076eb
|
@ -43,10 +43,10 @@ error_t bvgaflusher(Buffer_t *buf)
|
|||
ushort *fbp = BtVideoInfo.framebufferAddr;
|
||||
uchar color = 0xf;
|
||||
|
||||
uchar *currentLine = buf->wp - buf->lineLen - buf->lastLF;
|
||||
uchar *currentLine = buf->wp - buf->lastLF;
|
||||
uchar *bufStart = (uchar *)lmax((size_t)buf->buf,
|
||||
(size_t)currentLine
|
||||
- (buf->nLines - 2 + bscroll) * buf->lineLen);
|
||||
- (buf->nLines - 1 + bscroll) * buf->lineLen);
|
||||
|
||||
uchar *ptr = bufStart;
|
||||
|
||||
|
@ -87,10 +87,21 @@ void IoScrollDown(void)
|
|||
|
||||
void IoScrollUp(void)
|
||||
{
|
||||
// Keep the 8 below the 10 given to BOpenTermBufEx
|
||||
if (bscroll < BtVideoInfo.framebufferHeight * 8) /* XXX */
|
||||
BLockBuf(BStdOut);
|
||||
|
||||
uchar *currentLine = BStdOut->wp - BStdOut->lastLF;
|
||||
assert(currentLine >= BStdOut->buf);
|
||||
|
||||
// Scrollable lines
|
||||
uint scrabble = max(0, (currentLine-BStdOut->buf)/BStdOut->lineLen
|
||||
- BStdOut->nLines + 1);
|
||||
|
||||
if (bscroll < scrabble)
|
||||
bscroll++;
|
||||
|
||||
bvgaflusher(BStdOut);
|
||||
|
||||
BUnlockBuf(BStdOut);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -65,9 +65,12 @@ error_t CmdHelp(int argc, char **argv, char *cmdline)
|
|||
|
||||
error_t CmdClear(int argc, char **argv, char *cmdline)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < BtVideoInfo.framebufferHeight; i++)
|
||||
KernLog("\n");
|
||||
BLockBuf(BStdOut);
|
||||
|
||||
BStdOut->wp = BStdOut->rp = BStdOut->buf;
|
||||
BStdOut->lastLF = 0;
|
||||
|
||||
BUnlockBuf(BStdOut);
|
||||
|
||||
return EOK;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue