rtpbasedepayload: remove object locking an extension
authorMatthew Waters <matthew@centricular.com>
Tue, 27 Jul 2021 07:44:02 +0000 (17:44 +1000)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 28 Jul 2021 04:16:58 +0000 (04:16 +0000)
Doing that is fraught with danger of deadlocks and is not conceptually
part of the API contract.  The object lock is generally intended for
internal-object-use only.

If another lock is needed, that should be added separately.

This lock was erronously added as part of:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1118

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

gst-libs/gst/rtp/gstrtpbasedepayload.c

index cd2fd76..811d4e6 100644 (file)
@@ -1233,12 +1233,10 @@ read_rtp_header_extensions (GstRTPBaseDepayload * depayload,
       }
 
       if (ext) {
-        GST_OBJECT_LOCK (ext);
         if (!gst_rtp_header_extension_read (ext, ext_flags, &pdata[offset],
                 read_len, output)) {
           GST_WARNING_OBJECT (depayload, "RTP header extension (%s) could "
               "not read payloaded data", GST_OBJECT_NAME (ext));
-          GST_OBJECT_UNLOCK (ext);
           gst_object_unref (ext);
           goto out;
         }
@@ -1247,7 +1245,6 @@ read_rtp_header_extensions (GstRTPBaseDepayload * depayload,
           needs_src_caps_update = TRUE;
         }
 
-        GST_OBJECT_UNLOCK (ext);
         gst_object_unref (ext);
       }
       GST_OBJECT_UNLOCK (depayload);