From ab971f8abb8f3e107619866151335ec6e889b5c5 Mon Sep 17 00:00:00 2001 From: Vivek Kasireddy Date: Tue, 14 Sep 2021 14:18:36 -0700 Subject: ui/gtk-egl: Wait for the draw signal for dmabuf blobs Instead of immediately drawing and submitting, queue and wait for the draw signal if the dmabuf submitted is a blob. Cc: Gerd Hoffmann Reviewed-by: Gerd Hoffmann Signed-off-by: Vivek Kasireddy Message-Id: <20210914211837.3229977-5-vivek.kasireddy@intel.com> Signed-off-by: Gerd Hoffmann --- ui/gtk-egl.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'ui/gtk-egl.c') diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c index 3a90aeb2b9..72ce5e1f8f 100644 --- a/ui/gtk-egl.c +++ b/ui/gtk-egl.c @@ -309,6 +309,21 @@ void gd_egl_scanout_flush(DisplayChangeListener *dcl, eglSwapBuffers(qemu_egl_display, vc->gfx.esurface); } +void gd_egl_flush(DisplayChangeListener *dcl, + uint32_t x, uint32_t y, uint32_t w, uint32_t h) +{ + VirtualConsole *vc = container_of(dcl, VirtualConsole, gfx.dcl); + GtkWidget *area = vc->gfx.drawing_area; + + if (vc->gfx.guest_fb.dmabuf) { + graphic_hw_gl_block(vc->gfx.dcl.con, true); + gtk_widget_queue_draw_area(area, x, y, w, h); + return; + } + + gd_egl_scanout_flush(&vc->gfx.dcl, x, y, w, h); +} + void gtk_egl_init(DisplayGLMode mode) { GdkDisplay *gdk_display = gdk_display_get_default(); -- cgit v1.2.3