Commit ed8276ac7e7e4d18cbb37ee3069f3fc2f08ca1c7

Authored by ths
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;
... ...