[Spice-devel] [PATCH 8/8] spice/gl: create dummy primary surface (RfC)
Gerd Hoffmann
kraxel at redhat.com
Thu Feb 18 09:26:50 UTC 2016
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 at redhat.com>
---
ui/spice-display.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/ui/spice-display.c b/ui/spice-display.c
index b222984..54702bb 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
More information about the Spice-devel
mailing list