Diff for /qemu/console.c between versions 1.1.1.12 and 1.1.1.13

version 1.1.1.12, 2018/04/24 19:17:02 version 1.1.1.13, 2018/04/24 19:34:12
Line 176  void vga_hw_invalidate(void) Line 176  void vga_hw_invalidate(void)
 void vga_hw_screen_dump(const char *filename)  void vga_hw_screen_dump(const char *filename)
 {  {
     TextConsole *previous_active_console;      TextConsole *previous_active_console;
       bool cswitch;
   
     previous_active_console = active_console;      previous_active_console = active_console;
       cswitch = previous_active_console && previous_active_console->index != 0;
   
     /* There is currently no way of specifying which screen we want to dump,      /* There is currently no way of specifying which screen we want to dump,
        so always dump the first one.  */         so always dump the first one.  */
     console_select(0);      if (cswitch) {
           console_select(0);
       }
     if (consoles[0] && consoles[0]->hw_screen_dump) {      if (consoles[0] && consoles[0]->hw_screen_dump) {
         consoles[0]->hw_screen_dump(consoles[0]->hw, filename);          consoles[0]->hw_screen_dump(consoles[0]->hw, filename, cswitch);
       } else {
           error_report("screen dump not implemented");
     }      }
   
     if (previous_active_console) {      if (cswitch) {
         console_select(previous_active_console->index);          console_select(previous_active_console->index);
     }      }
 }  }
Line 1011  static void console_putchar(TextConsole  Line 1017  static void console_putchar(TextConsole 
                             console_clear_xy(s, x, y);                              console_clear_xy(s, x, y);
                         }                          }
                     }                      }
                 break;                      break;
                 }                  }
                   break;
             case 'K':              case 'K':
                 switch (s->esc_params[0]) {                  switch (s->esc_params[0]) {
                 case 0:                  case 0:
                 /* clear to eol */                      /* clear to eol */
                 for(x = s->x; x < s->width; x++) {                      for(x = s->x; x < s->width; x++) {
                         console_clear_xy(s, x, s->y);                          console_clear_xy(s, x, s->y);
                 }                      }
                 break;                      break;
                 case 1:                  case 1:
                     /* clear from beginning of line */                      /* clear from beginning of line */
                     for (x = 0; x <= s->x; x++) {                      for (x = 0; x <= s->x; x++) {
Line 1032  static void console_putchar(TextConsole  Line 1039  static void console_putchar(TextConsole 
                     for(x = 0; x < s->width; x++) {                      for(x = 0; x < s->width; x++) {
                         console_clear_xy(s, x, s->y);                          console_clear_xy(s, x, s->y);
                     }                      }
                 break;                      break;
             }                  }
                 break;                  break;
             case 'm':              case 'm':
             console_handle_escape(s);                  console_handle_escape(s);
             break;                  break;
             case 'n':              case 'n':
                 /* report cursor position */                  /* report cursor position */
                 /* TODO: send ESC[row;colR */                  /* TODO: send ESC[row;colR */
Line 1440  void console_color_init(DisplayState *ds Line 1447  void console_color_init(DisplayState *ds
     }      }
 }  }
   
 static int n_text_consoles;  
 static CharDriverState *text_consoles[128];  
   
 static void text_console_set_echo(CharDriverState *chr, bool echo)  static void text_console_set_echo(CharDriverState *chr, bool echo)
 {  {
     TextConsole *s = chr->opaque;      TextConsole *s = chr->opaque;
Line 1509  static void text_console_do_init(CharDri Line 1513  static void text_console_do_init(CharDri
         chr->init(chr);          chr->init(chr);
 }  }
   
 int text_console_init(QemuOpts *opts, CharDriverState **_chr)  CharDriverState *text_console_init(QemuOpts *opts)
 {  {
     CharDriverState *chr;      CharDriverState *chr;
     TextConsole *s;      TextConsole *s;
Line 1518  int text_console_init(QemuOpts *opts, Ch Line 1522  int text_console_init(QemuOpts *opts, Ch
   
     chr = g_malloc0(sizeof(CharDriverState));      chr = g_malloc0(sizeof(CharDriverState));
   
     if (n_text_consoles == 128) {  
         fprintf(stderr, "Too many text consoles\n");  
         exit(1);  
     }  
     text_consoles[n_text_consoles] = chr;  
     n_text_consoles++;  
   
     width = qemu_opt_get_number(opts, "width", 0);      width = qemu_opt_get_number(opts, "width", 0);
     if (width == 0)      if (width == 0)
         width = qemu_opt_get_number(opts, "cols", 0) * FONT_WIDTH;          width = qemu_opt_get_number(opts, "cols", 0) * FONT_WIDTH;
Line 1541  int text_console_init(QemuOpts *opts, Ch Line 1538  int text_console_init(QemuOpts *opts, Ch
   
     if (!s) {      if (!s) {
         g_free(chr);          g_free(chr);
         return -EBUSY;          return NULL;
     }      }
   
     s->chr = chr;      s->chr = chr;
Line 1549  int text_console_init(QemuOpts *opts, Ch Line 1546  int text_console_init(QemuOpts *opts, Ch
     s->g_height = height;      s->g_height = height;
     chr->opaque = s;      chr->opaque = s;
     chr->chr_set_echo = text_console_set_echo;      chr->chr_set_echo = text_console_set_echo;
       return chr;
     *_chr = chr;  
     return 0;  
 }  }
   
 void text_consoles_set_display(DisplayState *ds)  void text_consoles_set_display(DisplayState *ds)
 {  {
     int i;      int i;
   
     for (i = 0; i < n_text_consoles; i++) {      for (i = 0; i < nb_consoles; i++) {
         text_console_do_init(text_consoles[i], ds);          if (consoles[i]->console_type != GRAPHIC_CONSOLE) {
               text_console_do_init(consoles[i]->chr, ds);
           }
     }      }
   
     n_text_consoles = 0;  
 }  }
   
 void qemu_console_resize(DisplayState *ds, int width, int height)  void qemu_console_resize(DisplayState *ds, int width, int height)
Line 1689  PixelFormat qemu_default_pixelformat(int Line 1684  PixelFormat qemu_default_pixelformat(int
             pf.rbits = 8;              pf.rbits = 8;
             pf.gbits = 8;              pf.gbits = 8;
             pf.bbits = 8;              pf.bbits = 8;
               break;
         case 32:          case 32:
             pf.rmask = 0x00FF0000;              pf.rmask = 0x00FF0000;
             pf.gmask = 0x0000FF00;              pf.gmask = 0x0000FF00;

Removed from v.1.1.1.12  
changed lines
  Added in v.1.1.1.13


unix.superglobalmegacorp.com