This makes qxl respond to user interface window resizes when not using spice, so it works with gtk and vnc too.
Signed-off-by: Gerd Hoffmann <kra...@redhat.com> --- hw/display/qxl.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/hw/display/qxl.c b/hw/display/qxl.c index 431c1070967a..e1df95c3e8a9 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -1177,8 +1177,35 @@ static const QXLInterface qxl_interface = { .client_monitors_config = interface_client_monitors_config, }; +static int qxl_ui_info(void *opaque, uint32_t idx, QemuUIInfo *info) +{ + PCIQXLDevice *qxl = opaque; + VDAgentMonitorsConfig *cfg; + size_t size; + + if (using_spice) { + /* spice agent will handle display resize */ + return -1; + } + if (idx > 0) { + /* supporting only single head for now */ + return -1; + } + + /* go fake a spice agent message */ + size = sizeof(VDAgentMonitorsConfig) + sizeof(VDAgentMonConfig); + cfg = g_malloc0(size); + cfg->num_of_monitors = 1; + cfg->monitors[0].width = info->width; + cfg->monitors[0].height = info->height; + interface_client_monitors_config(&qxl->ssd.qxl, cfg); + g_free(cfg); + return 0; +} + static const GraphicHwOps qxl_ops = { .gfx_update = qxl_hw_update, + .ui_info = qxl_ui_info, .gfx_update_async = true, }; -- 2.27.0