From a35f8d52d63cabcc2b65ff7f9891148039b1c86a Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sat, 10 Aug 2024 01:03:17 +0200 Subject: [PATCH] gsk: Clear current context after unrealize() Make sure both GL renderers don't leave their contexts alive via the current context, but ensure they dispose of them properly. Fixes issues when the corresponding GL resources in the surfaces they were attached to go away. --- gsk/gl/gskglrenderer.c | 2 ++ gsk/gpu/gsknglrenderer.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index 63703f27c2..bfc23712ee 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -258,6 +258,8 @@ gsk_gl_renderer_unrealize (GskRenderer *renderer) g_clear_object (&self->driver); g_clear_object (&self->command_queue); g_clear_object (&self->context); + + gdk_gl_context_clear_current (); } static cairo_region_t * diff --git a/gsk/gpu/gsknglrenderer.c b/gsk/gpu/gsknglrenderer.c index 880c7f1b0c..4d23a67cfa 100644 --- a/gsk/gpu/gsknglrenderer.c +++ b/gsk/gpu/gsknglrenderer.c @@ -139,6 +139,8 @@ gsk_ngl_renderer_unrealize (GskRenderer *renderer) gsk_ngl_renderer_free_backbuffer (self); + gdk_gl_context_clear_current (); + GSK_RENDERER_CLASS (gsk_ngl_renderer_parent_class)->unrealize (renderer); }