mirror of
https://git.proxmox.com/git/qemu
synced 2025-07-27 06:01:16 +00:00
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:
parent
dbcf5e82de
commit
ed8276ac7e
25
console.c
25
console.c
@ -533,21 +533,24 @@ static void console_show_cursor(TextConsole *s, int show)
|
|||||||
int y, y1;
|
int y, y1;
|
||||||
|
|
||||||
if (s == active_console) {
|
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;
|
y1 = (s->y_base + s->y) % s->total_height;
|
||||||
y = y1 - s->y_displayed;
|
y = y1 - s->y_displayed;
|
||||||
if (y < 0)
|
if (y < 0)
|
||||||
y += s->total_height;
|
y += s->total_height;
|
||||||
if (y < s->height) {
|
if (y < s->height) {
|
||||||
c = &s->cells[y1 * s->width + s->x];
|
c = &s->cells[y1 * s->width + x];
|
||||||
if (show) {
|
if (show) {
|
||||||
TextAttributes t_attrib = s->t_attrib_default;
|
TextAttributes t_attrib = s->t_attrib_default;
|
||||||
t_attrib.invers = !(t_attrib.invers); /* invert fg and bg */
|
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 {
|
} else {
|
||||||
vga_putcharxy(s->ds, s->x, y, c->ch,
|
vga_putcharxy(s->ds, x, y, c->ch, &(c->t_attrib));
|
||||||
&(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);
|
FONT_WIDTH, FONT_HEIGHT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -796,8 +799,10 @@ static void console_putchar(TextConsole *s, int ch)
|
|||||||
s->state = TTY_STATE_ESC;
|
s->state = TTY_STATE_ESC;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (s->x >= s->width - 1) {
|
if (s->x >= s->width) {
|
||||||
break;
|
/* line wrap */
|
||||||
|
s->x = 0;
|
||||||
|
console_put_lf(s);
|
||||||
}
|
}
|
||||||
y1 = (s->y_base + s->y) % s->total_height;
|
y1 = (s->y_base + s->y) % s->total_height;
|
||||||
c = &s->cells[y1 * s->width + s->x];
|
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;
|
c->t_attrib = s->t_attrib;
|
||||||
update_xy(s, s->x, s->y);
|
update_xy(s, s->x, s->y);
|
||||||
s->x++;
|
s->x++;
|
||||||
#if 0 /* line wrap disabled */
|
|
||||||
if (s->x >= s->width) {
|
|
||||||
s->x = 0;
|
|
||||||
console_put_lf(s);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user