aggregator: Replace event lock with pad's object lock
authorOlivier CrĂȘte <olivier.crete@collabora.com>
Wed, 14 Jan 2015 19:35:15 +0000 (14:35 -0500)
committerThibault Saunier <tsaunier@gnome.org>
Thu, 29 Jan 2015 09:24:18 +0000 (10:24 +0100)
Reduce the number of locks simplify code, what is protects
is exposed, but the lock was not.

Also means adding an _unlocked version of gst_aggregator_pad_steal_buffer().

https://bugzilla.gnome.org/show_bug.cgi?id=742684

gst/audiomixer/gstaudiomixer.c

index 9f75a8e..01521e5 100644 (file)
@@ -1199,7 +1199,7 @@ gst_audio_mixer_mix_buffer (GstAudioMixer * audiomixer, GstAudioMixerPad * pad,
       GstBuffer *buf;
       /* Buffer done, drop it */
       gst_buffer_replace (&pad->buffer, NULL);
-      buf = gst_aggregator_pad_steal_buffer (aggpad);
+      buf = gst_aggregator_pad_steal_buffer_unlocked (aggpad);
       if (buf)
         gst_buffer_unref (buf);
     }
@@ -1208,7 +1208,7 @@ gst_audio_mixer_mix_buffer (GstAudioMixer * audiomixer, GstAudioMixerPad * pad,
   }
 
   if (GST_BUFFER_FLAG_IS_SET (inbuf, GST_BUFFER_FLAG_GAP)) {
-    GstBuffer *aggpadbuf = gst_aggregator_pad_steal_buffer (aggpad);
+    GstBuffer *aggpadbuf = gst_aggregator_pad_steal_buffer_unlocked (aggpad);
 
     /* skip gap buffer */
     GST_LOG_OBJECT (pad, "skipping GAP buffer");
@@ -1330,7 +1330,7 @@ gst_audio_mixer_mix_buffer (GstAudioMixer * audiomixer, GstAudioMixerPad * pad,
 
     /* Buffer done, drop it */
     gst_buffer_replace (&pad->buffer, NULL);
-    buf = gst_aggregator_pad_steal_buffer (aggpad);
+    buf = gst_aggregator_pad_steal_buffer_unlocked (aggpad);
     if (buf)
       gst_buffer_unref (buf);
     GST_DEBUG_OBJECT (pad, "Finished mixing buffer, waiting for next");