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 <dmitry.osipenko@collabora.com>
---
ui/egl-headless.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/ui/egl-headless.c b/ui/egl-headless.c
index 1f6b845500dd..c2cb179393c3 100644
--- a/ui/egl-headless.c
+++ b/ui/egl-headless.c
@@ -42,9 +42,17 @@ static void egl_gfx_switch(DisplayChangeListener *dcl,
static QEMUGLContext egl_create_context(DisplayGLCtx *dgc,
QEMUGLParams *params)
{
+ QEMUGLContext ctx, current_context = eglGetCurrentContext();
+
eglMakeCurrent(qemu_egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE,
qemu_egl_rn_ctx);
- 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;
}
static void egl_scanout_disable(DisplayChangeListener *dcl)
--
2.52.0