Get currently bound GL context when creating new GL context and restore it after the creation for consistency with behavior expected by virglrenderer that assumes context-creation doesn't switch context.
Signed-off-by: Dmitry Osipenko <[email protected]> --- ui/gtk-egl.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c index 0dbb429958e5..be769bcbfbb1 100644 --- a/ui/gtk-egl.c +++ b/ui/gtk-egl.c @@ -218,10 +218,17 @@ QEMUGLContext gd_egl_create_context(DisplayGLCtx *dgc, QEMUGLParams *params) { VirtualConsole *vc = container_of(dgc, VirtualConsole, gfx.dgc); + QEMUGLContext ctx, current_context = eglGetCurrentContext(); eglMakeCurrent(qemu_egl_display, vc->gfx.esurface, vc->gfx.esurface, vc->gfx.ectx); - return qemu_egl_create_context(dgc, params); + + ctx = qemu_egl_create_context(dgc, params); + + eglMakeCurrent(qemu_egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE, + current_context); + + return ctx; } void gd_egl_scanout_disable(DisplayChangeListener *dcl) -- 2.52.0
