From 49211bdf745ee4774560633d9bf2c7b7758c627f Mon Sep 17 00:00:00 2001 From: Aaron Boxer Date: Fri, 6 Dec 2019 23:24:57 -0600 Subject: [PATCH] d3dvideosink: use class lock when setting pool config --- sys/d3dvideosink/d3dhelpers.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sys/d3dvideosink/d3dhelpers.c b/sys/d3dvideosink/d3dhelpers.c index 32e959b..dbe2198 100644 --- a/sys/d3dvideosink/d3dhelpers.c +++ b/sys/d3dvideosink/d3dhelpers.c @@ -630,10 +630,14 @@ gst_d3dsurface_buffer_pool_set_config (GstBufferPool * bpool, caps); /* Create a surface to get exact buffer size */ + LOCK_CLASS (sink, klass); + CHECK_REF_COUNT (klass, sink, error); + CHECK_D3D_DEVICE (klass, sink, error); hr = IDirect3DDevice9_CreateOffscreenPlainSurface (klass->d3d. device.d3d_device, GST_VIDEO_INFO_WIDTH (&info), GST_VIDEO_INFO_HEIGHT (&info), d3dformat, D3DPOOL_DEFAULT, &surface, NULL); + UNLOCK_CLASS (sink, klass); if (hr != D3D_OK) { GST_ERROR_OBJECT (sink, "Failed to create D3D surface"); return FALSE; @@ -672,6 +676,10 @@ gst_d3dsurface_buffer_pool_set_config (GstBufferPool * bpool, return GST_BUFFER_POOL_CLASS (gst_d3dsurface_buffer_pool_parent_class)->set_config (bpool, config); + +error: + UNLOCK_CLASS (sink, klass); + return FALSE; } static GstFlowReturn -- 2.7.4