diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12commandqueue.cpp b/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12commandqueue.cpp index df85ddaf0a..5a9cbaf4b3 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12commandqueue.cpp +++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d12/gstd3d12commandqueue.cpp @@ -570,9 +570,13 @@ gst_d3d12_command_queue_drain (GstD3D12CommandQueue * queue) } { - std::lock_guard < std::mutex > lk (priv->lock); - gc_list = priv->gc_list; - priv->gc_list = { }; + if (priv->gc_thread != g_thread_self ()) { + std::lock_guard < std::mutex > lk (priv->lock); + gc_list = priv->gc_list; + priv->gc_list = { }; + } else { + priv->gc_list = { }; + } } }