On Mon, Mar 2, 2026 at 4:04 PM Dmitry Osipenko <[email protected]> wrote: > > 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]>
Reviewed-by: Marc-André Lureau <[email protected]> > --- > ui/gtk-gl-area.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/ui/gtk-gl-area.c b/ui/gtk-gl-area.c > index c709b2ce0f63..ce49000d3f17 100644 > --- a/ui/gtk-gl-area.c > +++ b/ui/gtk-gl-area.c > @@ -250,11 +250,13 @@ QEMUGLContext gd_gl_area_create_context(DisplayGLCtx > *dgc, > QEMUGLParams *params) > { > VirtualConsole *vc = container_of(dgc, VirtualConsole, gfx.dgc); > + GdkGLContext *ctx, *current_ctx; > GdkWindow *window; > - GdkGLContext *ctx; > GError *err = NULL; > int major, minor; > > + current_ctx = gdk_gl_context_get_current(); > + > window = gtk_widget_get_window(vc->gfx.drawing_area); > ctx = gdk_window_create_gl_context(window, &err); > if (err) { > @@ -275,8 +277,12 @@ QEMUGLContext gd_gl_area_create_context(DisplayGLCtx > *dgc, > > gdk_gl_context_make_current(ctx); > gdk_gl_context_get_version(ctx, &major, &minor); > - gdk_gl_context_clear_current(); > - gtk_gl_area_make_current(GTK_GL_AREA(vc->gfx.drawing_area)); > + > + if (current_ctx) { > + gdk_gl_context_make_current(current_ctx); > + } else { > + gdk_gl_context_clear_current(); > + } > > if (gd_cmp_gl_context_version(major, minor, params) == -1) { > /* created ctx version < requested version */ > -- > 2.52.0 > > -- Marc-André Lureau
