ui/gtk: graphic_hw_gl_flushed after closing dmabuf->fence_fd
The dmabuf often becomes invalid right after unblocking pipeline and graphic_hw_gl_flushed in case a new scanout blob is submitted because the dmabuf associated with the current guest scanout is freed after swapping. So both graphic_hw_gl_block and graphic_hw_gl_flushed should be executed after closing fence_fd for the current dmabuf. Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Vivek Kasireddy <vivek.kasireddy@intel.com> Signed-off-by: Dongwon Kim <dongwon.kim@intel.com> Message-Id: <20211121172237.14937-1-dongwon.kim@intel.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
f14aab420c
commit
c3abdb2faf
4
ui/gtk.c
4
ui/gtk.c
@ -589,11 +589,11 @@ void gd_hw_gl_flushed(void *vcon)
|
|||||||
VirtualConsole *vc = vcon;
|
VirtualConsole *vc = vcon;
|
||||||
QemuDmaBuf *dmabuf = vc->gfx.guest_fb.dmabuf;
|
QemuDmaBuf *dmabuf = vc->gfx.guest_fb.dmabuf;
|
||||||
|
|
||||||
graphic_hw_gl_block(vc->gfx.dcl.con, false);
|
|
||||||
graphic_hw_gl_flushed(vc->gfx.dcl.con);
|
|
||||||
qemu_set_fd_handler(dmabuf->fence_fd, NULL, NULL, NULL);
|
qemu_set_fd_handler(dmabuf->fence_fd, NULL, NULL, NULL);
|
||||||
close(dmabuf->fence_fd);
|
close(dmabuf->fence_fd);
|
||||||
dmabuf->fence_fd = -1;
|
dmabuf->fence_fd = -1;
|
||||||
|
graphic_hw_gl_block(vc->gfx.dcl.con, false);
|
||||||
|
graphic_hw_gl_flushed(vc->gfx.dcl.con);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** DisplayState Callbacks (opengl version) **/
|
/** DisplayState Callbacks (opengl version) **/
|
||||||
|
Loading…
Reference in New Issue
Block a user