diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2014-01-24 17:38:20 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2014-03-05 09:52:04 +0100 |
commit | 6f90f3d786ec1ddae31535bb4be4a1120fd5dfe0 (patch) | |
tree | 4fc7e04c2095da1e671cbda0a889cd8452836b6d | |
parent | 5643706a095044d75df1c0588aac553a595b972b (diff) | |
download | hqemu-6f90f3d786ec1ddae31535bb4be4a1120fd5dfe0.zip hqemu-6f90f3d786ec1ddae31535bb4be4a1120fd5dfe0.tar.gz |
console: add QemuUIInfo
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r-- | include/ui/console.h | 12 | ||||
-rw-r--r-- | ui/console.c | 17 |
2 files changed, 29 insertions, 0 deletions
diff --git a/include/ui/console.h b/include/ui/console.h index b2af53e..08a38ea 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -120,6 +120,14 @@ struct DisplaySurface { struct PixelFormat pf; }; +typedef struct QemuUIInfo { + /* geometry */ + int xoff; + int yoff; + uint32_t width; + uint32_t height; +} QemuUIInfo; + /* cursor data format is 32bit RGBA */ typedef struct QEMUCursor { int width, height; @@ -204,6 +212,8 @@ void update_displaychangelistener(DisplayChangeListener *dcl, uint64_t interval); void unregister_displaychangelistener(DisplayChangeListener *dcl); +int dpy_set_ui_info(QemuConsole *con, QemuUIInfo *info); + void dpy_gfx_update(QemuConsole *con, int x, int y, int w, int h); void dpy_gfx_replace_surface(QemuConsole *con, DisplaySurface *surface); @@ -266,6 +276,7 @@ typedef struct GraphicHwOps { void (*gfx_update)(void *opaque); void (*text_update)(void *opaque, console_ch_t *text); void (*update_interval)(void *opaque, uint64_t interval); + int (*ui_info)(void *opaque, uint32_t head, QemuUIInfo *info); } GraphicHwOps; QemuConsole *graphic_console_init(DeviceState *dev, uint32_t head, @@ -283,6 +294,7 @@ bool qemu_console_is_graphic(QemuConsole *con); bool qemu_console_is_fixedsize(QemuConsole *con); int qemu_console_get_index(QemuConsole *con); uint32_t qemu_console_get_head(QemuConsole *con); +QemuUIInfo *qemu_console_get_ui_info(QemuConsole *con); int qemu_console_get_width(QemuConsole *con, int fallback); int qemu_console_get_height(QemuConsole *con, int fallback); diff --git a/ui/console.c b/ui/console.c index 0a4f912..4df251d 100644 --- a/ui/console.c +++ b/ui/console.c @@ -125,6 +125,7 @@ struct QemuConsole { /* Graphic console state. */ Object *device; uint32_t head; + QemuUIInfo ui_info; const GraphicHwOps *hw_ops; void *hw; @@ -1347,6 +1348,16 @@ void unregister_displaychangelistener(DisplayChangeListener *dcl) gui_setup_refresh(ds); } +int dpy_set_ui_info(QemuConsole *con, QemuUIInfo *info) +{ + assert(con != NULL); + con->ui_info = *info; + if (con->hw_ops->ui_info) { + return con->hw_ops->ui_info(con->hw, con->head, info); + } + return -1; +} + void dpy_gfx_update(QemuConsole *con, int x, int y, int w, int h) { DisplayState *s = con->ds; @@ -1669,6 +1680,12 @@ uint32_t qemu_console_get_head(QemuConsole *con) return con ? con->head : -1; } +QemuUIInfo *qemu_console_get_ui_info(QemuConsole *con) +{ + assert(con != NULL); + return &con->ui_info; +} + int qemu_console_get_width(QemuConsole *con, int fallback) { if (con == NULL) { |