Set share_handle to the dmabuf fd after successful udmabuf creation,
and reset it to SHAREABLE_NONE on teardown.
Fixes: 5f899c34af1d ("virtio-gpu: allocate shareable 2d resources on !win32")
Reviewed-by: Akihiko Odaki <[email protected]>
Reviewed-by: Daniel P. Berrangé <[email protected]>
Signed-off-by: Marc-André Lureau <[email protected]>
---
hw/display/virtio-gpu-udmabuf.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hw/display/virtio-gpu-udmabuf.c b/hw/display/virtio-gpu-udmabuf.c
index 03f0b29754e1..fc63f2c4ec21 100644
--- a/hw/display/virtio-gpu-udmabuf.c
+++ b/hw/display/virtio-gpu-udmabuf.c
@@ -91,6 +91,7 @@ static void virtio_gpu_destroy_udmabuf(struct
virtio_gpu_simple_resource *res)
if (res->dmabuf_fd >= 0) {
close(res->dmabuf_fd);
res->dmabuf_fd = -1;
+ res->share_handle = SHAREABLE_NONE;
}
res->blob = NULL;
}
@@ -150,6 +151,7 @@ bool virtio_gpu_init_udmabuf(struct
virtio_gpu_simple_resource *res)
virtio_gpu_destroy_udmabuf(res);
return false;
}
+ res->share_handle = res->dmabuf_fd;
pdata = res->remapped;
}
@@ -183,6 +185,7 @@ void virtio_gpu_fini_udmabuf(VirtIOGPU *g, struct
virtio_gpu_simple_resource *re
res->dmabuf_fd != -1) {
qemu_dmabuf_close(dmabuf->buf);
res->dmabuf_fd = -1;
+ res->share_handle = SHAREABLE_NONE;
}
}
--
2.55.0.543.g5ebe2ebe4ea8