提交 ed8276ac 编写于 作者: T ths

Serial console improvements, by Stefan Weil.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2412 c046a42c-6fe2-441c-8c8c-71466251a162
上级 dbcf5e82
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册