console: add QemuUIInfo

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Gerd Hoffmann 2014-01-24 17:38:20 +01:00
parent 5643706a09
commit 6f90f3d786
2 changed files with 29 additions and 0 deletions

View File

@ -120,6 +120,14 @@ struct DisplaySurface {
struct PixelFormat pf; struct PixelFormat pf;
}; };
typedef struct QemuUIInfo {
/* geometry */
int xoff;
int yoff;
uint32_t width;
uint32_t height;
} QemuUIInfo;
/* cursor data format is 32bit RGBA */ /* cursor data format is 32bit RGBA */
typedef struct QEMUCursor { typedef struct QEMUCursor {
int width, height; int width, height;
@ -204,6 +212,8 @@ void update_displaychangelistener(DisplayChangeListener *dcl,
uint64_t interval); uint64_t interval);
void unregister_displaychangelistener(DisplayChangeListener *dcl); 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_update(QemuConsole *con, int x, int y, int w, int h);
void dpy_gfx_replace_surface(QemuConsole *con, void dpy_gfx_replace_surface(QemuConsole *con,
DisplaySurface *surface); DisplaySurface *surface);
@ -266,6 +276,7 @@ typedef struct GraphicHwOps {
void (*gfx_update)(void *opaque); void (*gfx_update)(void *opaque);
void (*text_update)(void *opaque, console_ch_t *text); void (*text_update)(void *opaque, console_ch_t *text);
void (*update_interval)(void *opaque, uint64_t interval); void (*update_interval)(void *opaque, uint64_t interval);
int (*ui_info)(void *opaque, uint32_t head, QemuUIInfo *info);
} GraphicHwOps; } GraphicHwOps;
QemuConsole *graphic_console_init(DeviceState *dev, uint32_t head, 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); bool qemu_console_is_fixedsize(QemuConsole *con);
int qemu_console_get_index(QemuConsole *con); int qemu_console_get_index(QemuConsole *con);
uint32_t qemu_console_get_head(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_width(QemuConsole *con, int fallback);
int qemu_console_get_height(QemuConsole *con, int fallback); int qemu_console_get_height(QemuConsole *con, int fallback);

View File

@ -125,6 +125,7 @@ struct QemuConsole {
/* Graphic console state. */ /* Graphic console state. */
Object *device; Object *device;
uint32_t head; uint32_t head;
QemuUIInfo ui_info;
const GraphicHwOps *hw_ops; const GraphicHwOps *hw_ops;
void *hw; void *hw;
@ -1347,6 +1348,16 @@ void unregister_displaychangelistener(DisplayChangeListener *dcl)
gui_setup_refresh(ds); 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) void dpy_gfx_update(QemuConsole *con, int x, int y, int w, int h)
{ {
DisplayState *s = con->ds; DisplayState *s = con->ds;
@ -1669,6 +1680,12 @@ uint32_t qemu_console_get_head(QemuConsole *con)
return con ? con->head : -1; 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) int qemu_console_get_width(QemuConsole *con, int fallback)
{ {
if (con == NULL) { if (con == NULL) {