From c8193b161523c6fc36b3ba25154c5bba0c46c19c Mon Sep 17 00:00:00 2001 From: Aaron Boxer Date: Sat, 7 Dec 2019 09:56:28 -0600 Subject: [PATCH] d3dvideosink: hold class lock for entire duration of class destruction This avoids a race condition currently when temporarily releasing the lock and then re-acquiring. --- sys/d3dvideosink/d3dvideosink.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/d3dvideosink/d3dvideosink.c b/sys/d3dvideosink/d3dvideosink.c index 41647c098a..0e353dd47f 100644 --- a/sys/d3dvideosink/d3dvideosink.c +++ b/sys/d3dvideosink/d3dvideosink.c @@ -445,10 +445,13 @@ static gboolean gst_d3dvideosink_stop (GstBaseSink * bsink) { GstD3DVideoSink *sink = GST_D3DVIDEOSINK (bsink); + GstD3DVideoSinkClass *klass = GST_D3DVIDEOSINK_GET_CLASS (sink); GST_DEBUG_OBJECT (bsink, "Stop() called"); + LOCK_CLASS (sink, klass); d3d_stop (sink); d3d_class_destroy (sink); + UNLOCK_CLASS (sink, klass); return TRUE; }