Current spice client expects we create a primary surface, even if we do display updates using dma-bufs exclusively. So just do that to get things going. Not fully clear whenever that is intentional or a bug on the spice side, so I keep this as separate patch for now. I think this should either be squashed into the previous patch, or dropped after fixing things on the spice side. Signed-off-by: Gerd Hoffmann <kraxel@xxxxxxxxxx> --- ui/spice-display.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ui/spice-display.c b/ui/spice-display.c index 15d7906..96beb02 100644 --- a/ui/spice-display.c +++ b/ui/spice-display.c @@ -856,13 +856,27 @@ static void spice_gl_switch(DisplayChangeListener *dcl, { SimpleSpiceDisplay *ssd = container_of(dcl, SimpleSpiceDisplay, dcl); EGLint stride, fourcc; + bool resize = true; int fd; + if (ssd->ds && new_surface && + surface_width(ssd->ds) == surface_width(new_surface) && + surface_height(ssd->ds) == surface_height(new_surface) && + surface_format(ssd->ds) == surface_format(new_surface)) { + resize = false; + } + if (ssd->ds) { surface_gl_destroy_texture(ssd->gls, ssd->ds); + if (resize) { + qemu_spice_destroy_host_primary(ssd); + } } ssd->ds = new_surface; if (ssd->ds) { + if (resize) { + qemu_spice_create_host_primary(ssd); + } surface_gl_create_texture(ssd->gls, ssd->ds); fd = egl_get_fd_for_texture(ssd->ds->texture, &stride, &fourcc); -- 1.8.3.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel