From 83b4b236ed54dab35f1b821ee2b6f3101c45c8cc Mon Sep 17 00:00:00 2001 From: Dongwon Kim Date: Wed, 28 Jun 2023 12:15:04 -0700 Subject: ui/gtk: Make sure the right EGL context is currently bound MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Observed a wrong context is bound when changing the scanout mode. To prevent problem, it is needed to make sure to bind the right context in gtk_egl_set_scanout_mode/gtk_gl_area_set_scanout_mode as well as unbind one in the end of gd_egl_update/gd_gl_area_update. Cc: Gerd Hoffmann Cc: Marc-André Lureau Cc: Vivek Kasireddy Signed-off-by: Dongwon Kim Reviewed-by: Marc-André Lureau Message-ID: <20230628191504.17185-1-dongwon.kim@intel.com> --- ui/gtk-egl.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'ui/gtk-egl.c') diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c index d59b8cd..42db1bb 100644 --- a/ui/gtk-egl.c +++ b/ui/gtk-egl.c @@ -32,6 +32,8 @@ static void gtk_egl_set_scanout_mode(VirtualConsole *vc, bool scanout) vc->gfx.scanout_mode = scanout; if (!vc->gfx.scanout_mode) { + eglMakeCurrent(qemu_egl_display, vc->gfx.esurface, + vc->gfx.esurface, vc->gfx.ectx); egl_fb_destroy(&vc->gfx.guest_fb); if (vc->gfx.surface) { surface_gl_destroy_texture(vc->gfx.gls, vc->gfx.ds); @@ -135,6 +137,8 @@ void gd_egl_update(DisplayChangeListener *dcl, vc->gfx.esurface, vc->gfx.ectx); surface_gl_update_texture(vc->gfx.gls, vc->gfx.ds, x, y, w, h); vc->gfx.glupdates++; + eglMakeCurrent(qemu_egl_display, EGL_NO_SURFACE, + EGL_NO_SURFACE, EGL_NO_CONTEXT); } void gd_egl_refresh(DisplayChangeListener *dcl) -- cgit v1.1