From 3df63a079cc881b77e7930361b5fd85b795d1160 Mon Sep 17 00:00:00 2001 From: Doug Nazar Date: Wed, 21 May 2025 10:04:59 -0400 Subject: [PATCH] glcontext/egl: Free dma_formats if someone else already initialized Part-of: --- .../gst-libs/gst/gl/egl/gstglcontext_egl.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/subprojects/gst-plugins-base/gst-libs/gst/gl/egl/gstglcontext_egl.c b/subprojects/gst-plugins-base/gst-libs/gst/gl/egl/gstglcontext_egl.c index 9aa5183c2d..ec57165c07 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/gl/egl/gstglcontext_egl.c +++ b/subprojects/gst-plugins-base/gst-libs/gst/gl/egl/gstglcontext_egl.c @@ -1762,12 +1762,20 @@ gst_gl_context_egl_fetch_dma_formats (GstGLContext * context) g_array_sort (dma_formats, _compare_dma_formats); - _print_all_dma_formats (context, dma_formats); - GST_OBJECT_LOCK (context); - egl->dma_formats = dma_formats; + // Are we the first to initialize? + ret = egl->dma_formats == NULL; + if (ret) + egl->dma_formats = dma_formats; GST_OBJECT_UNLOCK (context); + if (ret) { + _print_all_dma_formats (context, dma_formats); + } else { + // We lost the race... + g_array_unref (dma_formats); + } + g_free (formats); g_free (modifiers); g_free (ext_only);