vga: fix line comparison

Line counter doesn't wrap.

Signed-off-by: malc <av1474@comtv.ru>
This commit is contained in:
malc 2009-11-06 16:08:26 +03:00
parent d1984194f3
commit cae334cd6b
1 changed files with 5 additions and 7 deletions

View File

@ -1267,7 +1267,7 @@ static rgb_to_pixel_dup_func *rgb_to_pixel_dup_table[NB_DEPTHS] = {
static void vga_draw_text(VGACommonState *s, int full_update)
{
int cx, cy, cheight, cw, ch, cattr, height, width, ch_attr;
int cx_min, cx_max, linesize, x_incr, line;
int cx_min, cx_max, linesize, x_incr, line, line1;
uint32_t offset, fgcol, bgcol, v, cursor_offset;
uint8_t *d1, *d, *src, *dest, *cursor_ptr;
const uint8_t *font_ptr, *font_base[2];
@ -1420,14 +1420,12 @@ static void vga_draw_text(VGACommonState *s, int full_update)
(cx_max - cx_min + 1) * cw, cheight);
}
dest += linesize * cheight;
if (line >= s->line_compare) {
line -= s->line_compare;
line1 = line + cheight;
offset += line_offset;
if (line < s->line_compare && line1 >= s->line_compare) {
offset = 0;
}
else {
offset += line_offset;
line += cheight;
}
line = line1;
}
}