On Thu, Dec 03, 2020 at 12:08:05PM +0100, Gerd Hoffmann wrote: > 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; > + }
Does this break VNC resizes if both VNC + SPICE are enabled but the client is connected with VNC ? > + 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 > > Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|