|
@@ -115,6 +115,7 @@ typedef enum {
|
|
/* ??? This is mis-named.
|
|
/* ??? This is mis-named.
|
|
It is used for both text and graphical consoles. */
|
|
It is used for both text and graphical consoles. */
|
|
struct TextConsole {
|
|
struct TextConsole {
|
|
|
|
+ int index;
|
|
console_type_t console_type;
|
|
console_type_t console_type;
|
|
DisplayState *ds;
|
|
DisplayState *ds;
|
|
/* Graphic console state. */
|
|
/* Graphic console state. */
|
|
@@ -177,12 +178,15 @@ void vga_hw_screen_dump(const char *filename)
|
|
TextConsole *previous_active_console;
|
|
TextConsole *previous_active_console;
|
|
|
|
|
|
previous_active_console = active_console;
|
|
previous_active_console = active_console;
|
|
- active_console = consoles[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. */
|
|
- if (consoles[0] && consoles[0]->hw_screen_dump)
|
|
|
|
|
|
+ console_select(0);
|
|
|
|
+ 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);
|
|
- active_console = previous_active_console;
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ console_select(previous_active_console->index);
|
|
}
|
|
}
|
|
|
|
|
|
void vga_hw_text_update(console_ch_t *chardata)
|
|
void vga_hw_text_update(console_ch_t *chardata)
|
|
@@ -1247,6 +1251,7 @@ static TextConsole *new_console(DisplayState *ds, console_type_t console_type)
|
|
s->ds = ds;
|
|
s->ds = ds;
|
|
s->console_type = console_type;
|
|
s->console_type = console_type;
|
|
if (console_type != GRAPHIC_CONSOLE) {
|
|
if (console_type != GRAPHIC_CONSOLE) {
|
|
|
|
+ s->index = nb_consoles;
|
|
consoles[nb_consoles++] = s;
|
|
consoles[nb_consoles++] = s;
|
|
} else {
|
|
} else {
|
|
/* HACK: Put graphical consoles before text consoles. */
|
|
/* HACK: Put graphical consoles before text consoles. */
|
|
@@ -1254,7 +1259,9 @@ static TextConsole *new_console(DisplayState *ds, console_type_t console_type)
|
|
if (consoles[i - 1]->console_type == GRAPHIC_CONSOLE)
|
|
if (consoles[i - 1]->console_type == GRAPHIC_CONSOLE)
|
|
break;
|
|
break;
|
|
consoles[i] = consoles[i - 1];
|
|
consoles[i] = consoles[i - 1];
|
|
|
|
+ consoles[i]->index = i;
|
|
}
|
|
}
|
|
|
|
+ s->index = i;
|
|
consoles[i] = s;
|
|
consoles[i] = s;
|
|
nb_consoles++;
|
|
nb_consoles++;
|
|
}
|
|
}
|