Commit ed8276ac7e7e4d18cbb37ee3069f3fc2f08ca1c7
1 parent
dbcf5e82
Serial console improvements, by Stefan Weil.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2412 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
12 additions
and
13 deletions
console.c
| ... | ... | @@ -533,21 +533,24 @@ static void console_show_cursor(TextConsole *s, int show) |
| 533 | 533 | int y, y1; |
| 534 | 534 | |
| 535 | 535 | if (s == active_console) { |
| 536 | + int x = s->x; | |
| 537 | + if (x >= s->width) { | |
| 538 | + x = s->width - 1; | |
| 539 | + } | |
| 536 | 540 | y1 = (s->y_base + s->y) % s->total_height; |
| 537 | 541 | y = y1 - s->y_displayed; |
| 538 | 542 | if (y < 0) |
| 539 | 543 | y += s->total_height; |
| 540 | 544 | if (y < s->height) { |
| 541 | - c = &s->cells[y1 * s->width + s->x]; | |
| 545 | + c = &s->cells[y1 * s->width + x]; | |
| 542 | 546 | if (show) { |
| 543 | 547 | TextAttributes t_attrib = s->t_attrib_default; |
| 544 | 548 | t_attrib.invers = !(t_attrib.invers); /* invert fg and bg */ |
| 545 | - vga_putcharxy(s->ds, s->x, y, c->ch, &t_attrib); | |
| 549 | + vga_putcharxy(s->ds, x, y, c->ch, &t_attrib); | |
| 546 | 550 | } else { |
| 547 | - vga_putcharxy(s->ds, s->x, y, c->ch, | |
| 548 | - &(c->t_attrib)); | |
| 551 | + vga_putcharxy(s->ds, x, y, c->ch, &(c->t_attrib)); | |
| 549 | 552 | } |
| 550 | - dpy_update(s->ds, s->x * FONT_WIDTH, y * FONT_HEIGHT, | |
| 553 | + dpy_update(s->ds, x * FONT_WIDTH, y * FONT_HEIGHT, | |
| 551 | 554 | FONT_WIDTH, FONT_HEIGHT); |
| 552 | 555 | } |
| 553 | 556 | } |
| ... | ... | @@ -796,8 +799,10 @@ static void console_putchar(TextConsole *s, int ch) |
| 796 | 799 | s->state = TTY_STATE_ESC; |
| 797 | 800 | break; |
| 798 | 801 | default: |
| 799 | - if (s->x >= s->width - 1) { | |
| 800 | - break; | |
| 802 | + if (s->x >= s->width) { | |
| 803 | + /* line wrap */ | |
| 804 | + s->x = 0; | |
| 805 | + console_put_lf(s); | |
| 801 | 806 | } |
| 802 | 807 | y1 = (s->y_base + s->y) % s->total_height; |
| 803 | 808 | c = &s->cells[y1 * s->width + s->x]; |
| ... | ... | @@ -805,12 +810,6 @@ static void console_putchar(TextConsole *s, int ch) |
| 805 | 810 | c->t_attrib = s->t_attrib; |
| 806 | 811 | update_xy(s, s->x, s->y); |
| 807 | 812 | s->x++; |
| 808 | -#if 0 /* line wrap disabled */ | |
| 809 | - if (s->x >= s->width) { | |
| 810 | - s->x = 0; | |
| 811 | - console_put_lf(s); | |
| 812 | - } | |
| 813 | -#endif | |
| 814 | 813 | break; |
| 815 | 814 | } |
| 816 | 815 | break; | ... | ... |