Browse Source

ui/gdk: Restore original context after new context creation

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.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Message-ID: <20260303151422.977399-5-dmitry.osipenko@collabora.com>
Message-ID: <20260304165043.1437519-7-alex.bennee@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
master
Dmitry Osipenko 5 months ago
committed by Alex Bennée
parent
commit
47ab600668
  1. 12
      ui/gtk-gl-area.c

12
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 */

Loading…
Cancel
Save