Serial console improvements, by Stefan Weil.

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2412 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
ths 2007-02-10 22:37:56 +00:00
parent dbcf5e82de
commit ed8276ac7e
1 changed files with 12 additions and 13 deletions

View File

@ -533,21 +533,24 @@ static void console_show_cursor(TextConsole *s, int show)
int y, y1;
if (s == active_console) {
int x = s->x;
if (x >= s->width) {
x = s->width - 1;
}
y1 = (s->y_base + s->y) % s->total_height;
y = y1 - s->y_displayed;
if (y < 0)
y += s->total_height;
if (y < s->height) {
c = &s->cells[y1 * s->width + s->x];
c = &s->cells[y1 * s->width + x];
if (show) {
TextAttributes t_attrib = s->t_attrib_default;
t_attrib.invers = !(t_attrib.invers); /* invert fg and bg */
vga_putcharxy(s->ds, s->x, y, c->ch, &t_attrib);
vga_putcharxy(s->ds, x, y, c->ch, &t_attrib);
} else {
vga_putcharxy(s->ds, s->x, y, c->ch,
&(c->t_attrib));
vga_putcharxy(s->ds, x, y, c->ch, &(c->t_attrib));
}
dpy_update(s->ds, s->x * FONT_WIDTH, y * FONT_HEIGHT,
dpy_update(s->ds, x * FONT_WIDTH, y * FONT_HEIGHT,
FONT_WIDTH, FONT_HEIGHT);
}
}
@ -796,8 +799,10 @@ static void console_putchar(TextConsole *s, int ch)
s->state = TTY_STATE_ESC;
break;
default:
if (s->x >= s->width - 1) {
break;
if (s->x >= s->width) {
/* line wrap */
s->x = 0;
console_put_lf(s);
}
y1 = (s->y_base + s->y) % s->total_height;
c = &s->cells[y1 * s->width + s->x];
@ -805,12 +810,6 @@ static void console_putchar(TextConsole *s, int ch)
c->t_attrib = s->t_attrib;
update_xy(s, s->x, s->y);
s->x++;
#if 0 /* line wrap disabled */
if (s->x >= s->width) {
s->x = 0;
console_put_lf(s);
}
#endif
break;
}
break;