|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] [PATCH 7 of 13] fix console switch
Import some console switch improvements and fixes from qemu mainstream.
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
---
diff -r db86b9f0df7c console.c
--- a/console.c Mon Feb 16 12:18:33 2009 +0000
+++ b/console.c Mon Feb 16 16:36:58 2009 +0000
@@ -1190,7 +1190,7 @@
} else {
/* HACK: Put graphical consoles before text consoles. */
for (i = nb_consoles; i > 0; i--) {
- if (!consoles[i - 1]->console_type == GRAPHIC_CONSOLE)
+ if (consoles[i - 1]->console_type == GRAPHIC_CONSOLE)
break;
consoles[i] = consoles[i - 1];
}
@@ -1258,6 +1258,8 @@
static void text_console_do_init(CharDriverState *chr, DisplayState *ds, const
char *p)
{
TextConsole *s;
+ unsigned width;
+ unsigned height;
static int color_inited;
s = new_console(ds, (p == 0) ? TEXT_CONSOLE : TEXT_CONSOLE_FIXED_SIZE);
@@ -1277,15 +1279,36 @@
if (!color_inited) {
color_inited = 1;
- console_color_init(ds);
+ console_color_init(s->ds);
}
s->y_displayed = 0;
s->y_base = 0;
s->total_height = DEFAULT_BACKSCROLL;
s->x = 0;
s->y = 0;
- s->g_width = ds_get_width(s->ds);
- s->g_height = ds_get_height(s->ds);
+ width = ds_get_width(s->ds);
+ height = ds_get_height(s->ds);
+ if (p != 0) {
+ width = strtoul(p, (char **)&p, 10);
+ if (*p == 'C') {
+ p++;
+ width *= FONT_WIDTH;
+ }
+ if (*p == 'x') {
+ p++;
+ height = strtoul(p, (char **)&p, 10);
+ if (*p == 'C') {
+ p++;
+ height *= FONT_HEIGHT;
+ }
+ }
+ }
+ s->g_width = width;
+ s->g_height = height;
+
+ s->hw_invalidate = text_console_invalidate;
+ s->hw_text_update = text_console_update;
+ s->hw = s;
/* Set text attribute defaults */
s->t_attrib_default.bold = 0;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-devel] [PATCH 7 of 13] fix console switch,
Stefano Stabellini <=
|
|
|
|
|