gluploadelement: Avoid race condition of base class' context.
authorHe Junyan <junyan.he@intel.com>
Wed, 4 Nov 2020 09:02:13 +0000 (17:02 +0800)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 5 Nov 2020 04:08:13 +0000 (04:08 +0000)
The base class' context may change, we should use the common API
with lock to access it, rather than the just directly access the
struct field.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/916>

ext/gl/gstgluploadelement.c

index fab026b..7de7bba 100644 (file)
@@ -167,7 +167,7 @@ _gst_gl_upload_element_transform_caps (GstBaseTransform * bt,
   if (base_filter->display && !gst_gl_base_filter_find_gl_context (base_filter))
     return NULL;
 
-  context = GST_GL_BASE_FILTER (bt)->context;
+  context = gst_gl_base_filter_get_gl_context (base_filter);
 
   GST_OBJECT_LOCK (upload);
   if (upload->upload == NULL) {
@@ -191,7 +191,10 @@ _gst_gl_upload_element_transform_caps (GstBaseTransform * bt,
 
   ret_caps =
       gst_gl_upload_transform_caps (ul, context, direction, caps, filter);
+
   gst_object_unref (ul);
+  if (context)
+    gst_object_unref (context);
 
   return ret_caps;
 }