console: add QemuUIInfo
authorGerd Hoffmann <kraxel@redhat.com>
Fri, 24 Jan 2014 16:38:20 +0000 (17:38 +0100)
committerGerd Hoffmann <kraxel@redhat.com>
Wed, 5 Mar 2014 08:52:04 +0000 (09:52 +0100)
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
include/ui/console.h
ui/console.c

index b2af53e5e64889febd47bb9fd7c3349b1782f153..08a38eab138f6181709f56299ad9c6b89da601b8 100644 (file)
@@ -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);
 
index 0a4f9128a5c74f6a341b37eb8739d845ed066a69..4df251d57973d3e9ece7f6ce0faf0744a19f387c 100644 (file)
@@ -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) {