ui/gtk-egl: egl context needs to be unbound in the end of gd_egl_switch
authorDongwon Kim <dongwon.kim@intel.com>
Wed, 28 Sep 2022 21:58:05 +0000 (14:58 -0700)
committerGerd Hoffmann <kraxel@redhat.com>
Tue, 11 Oct 2022 13:38:08 +0000 (15:38 +0200)
A thread often fails to bind an egl context to itself after guest VM is
rebooted because the context is still owned by another thread. It is not
very clear what condition makes this happen but this can be prevented
by unbinding the context from the thread in the end of gd_egl_switch.

Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
Message-Id: <20220928215805.4661-1-dongwon.kim@intel.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
ui/gtk-egl.c

index b5bffbab2522421503cb0b0b6ab5c8f1dfbfa46b..35f917ceb15ea8da33569dce2e89a20ecb1341a2 100644 (file)
@@ -195,6 +195,9 @@ void gd_egl_switch(DisplayChangeListener *dcl,
     if (resized) {
         gd_update_windowsize(vc);
     }
+
+    eglMakeCurrent(qemu_egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE,
+                   EGL_NO_CONTEXT);
 }
 
 QEMUGLContext gd_egl_create_context(DisplayGLCtx *dgc,