aboutsummaryrefslogtreecommitdiff
path: root/ui
diff options
context:
space:
mode:
authorVolker RĂ¼melin <vr_qemu@t-online.de>2022-06-05 10:51:30 +0200
committerGerd Hoffmann <kraxel@redhat.com>2022-06-14 10:34:36 +0200
commite561b3b7df11875d7bd3b8670598cae5601a7f70 (patch)
treea465b94adc4395a40fb40efd5bace9e2cbda2605 /ui
parentdebd0753663bc89c86f5462a53268f2e3f680f60 (diff)
ui/gtk-gl-area: implement GL context destruction
The counterpart function for gd_gl_area_create_context() is currently empty. Implement the gd_gl_area_destroy_context() function to avoid GL context leaks. Signed-off-by: Volker RĂ¼melin <vr_qemu@t-online.de> Message-Id: <20220605085131.7711-1-vr_qemu@t-online.de> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'ui')
-rw-r--r--ui/gtk-gl-area.c8
-rw-r--r--ui/trace-events1
2 files changed, 8 insertions, 1 deletions
diff --git a/ui/gtk-gl-area.c b/ui/gtk-gl-area.c
index fc5a082eb8..0e20ea031d 100644
--- a/ui/gtk-gl-area.c
+++ b/ui/gtk-gl-area.c
@@ -201,7 +201,13 @@ QEMUGLContext gd_gl_area_create_context(DisplayGLCtx *dgc,
void gd_gl_area_destroy_context(DisplayGLCtx *dgc, QEMUGLContext ctx)
{
- /* FIXME */
+ GdkGLContext *current_ctx = gdk_gl_context_get_current();
+
+ trace_gd_gl_area_destroy_context(ctx, current_ctx);
+ if (ctx == current_ctx) {
+ gdk_gl_context_clear_current();
+ }
+ g_clear_object(&ctx);
}
void gd_gl_area_scanout_texture(DisplayChangeListener *dcl,
diff --git a/ui/trace-events b/ui/trace-events
index f78b5e6606..1040ba0f88 100644
--- a/ui/trace-events
+++ b/ui/trace-events
@@ -26,6 +26,7 @@ gd_key_event(const char *tab, int gdk_keycode, int qkeycode, const char *action)
gd_grab(const char *tab, const char *device, const char *reason) "tab=%s, dev=%s, reason=%s"
gd_ungrab(const char *tab, const char *device) "tab=%s, dev=%s"
gd_keymap_windowing(const char *name) "backend=%s"
+gd_gl_area_destroy_context(void *ctx, void *current_ctx) "ctx=%p, current_ctx=%p"
# vnc-auth-sasl.c
# vnc-auth-vencrypt.c