summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2014-09-24 17:05:27 +0200
committerGerd Hoffmann <kraxel@redhat.com>2014-09-29 10:20:09 +0200
commit1c1f94984430f5b9e91b01b75be23385122039f6 (patch)
treec0df378d7e70db3f077f51fb681d58c7c5ea8a05
parent81ab11a7a524d12412a59ef49c6b270671e62ea0 (diff)
downloadhqemu-1c1f94984430f5b9e91b01b75be23385122039f6.zip
hqemu-1c1f94984430f5b9e91b01b75be23385122039f6.tar.gz
console: add graphic_console_set_hwops
Add a function to allow display emulations to switch the hwops function pointers. This is useful for devices which have two completely different operation modes. Typical case is the vga compatibility mode vs. native mode in qxl and the upcoming virtio-vga device. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r--include/ui/console.h3
-rw-r--r--ui/console.c11
2 files changed, 12 insertions, 2 deletions
diff --git a/include/ui/console.h b/include/ui/console.h
index cde0faf..22ef8ca 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -292,6 +292,9 @@ typedef struct GraphicHwOps {
QemuConsole *graphic_console_init(DeviceState *dev, uint32_t head,
const GraphicHwOps *ops,
void *opaque);
+void graphic_console_set_hwops(QemuConsole *con,
+ const GraphicHwOps *hw_ops,
+ void *opaque);
void graphic_hw_update(QemuConsole *con);
void graphic_hw_invalidate(QemuConsole *con);
diff --git a/ui/console.c b/ui/console.c
index f819382..258af5d 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -1677,6 +1677,14 @@ DisplayState *init_displaystate(void)
return display_state;
}
+void graphic_console_set_hwops(QemuConsole *con,
+ const GraphicHwOps *hw_ops,
+ void *opaque)
+{
+ con->hw_ops = hw_ops;
+ con->hw = opaque;
+}
+
QemuConsole *graphic_console_init(DeviceState *dev, uint32_t head,
const GraphicHwOps *hw_ops,
void *opaque)
@@ -1691,8 +1699,7 @@ QemuConsole *graphic_console_init(DeviceState *dev, uint32_t head,
ds = get_alloc_displaystate();
trace_console_gfx_new();
s = new_console(ds, GRAPHIC_CONSOLE, head);
- s->hw_ops = hw_ops;
- s->hw = opaque;
+ graphic_console_set_hwops(s, hw_ops, opaque);
if (dev) {
object_property_set_link(OBJECT(s), OBJECT(dev), "device",
&error_abort);
OpenPOWER on IntegriCloud