|
@@ -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();
|