aggregator: Make the PAD_LOCK private

Instead of using the GST_OBJECT_LOCK we should have
a dedicated mutex for the pad as it is also associated
with the mutex on the EVENT_MUTEX on which we wait
in the _chain function of the pad.

The GstAggregatorPad.segment is still protected with the
GST_OBJECT_LOCK.

Remove the gst_aggregator_pad_peak_unlocked method as it does not make
sense anymore with a private lock.

https://bugzilla.gnome.org/show_bug.cgi?id=742684
This commit is contained in:
Thibault Saunier 2015-01-26 11:29:08 +01:00
parent 198b16c563
commit b1eef4f436

View file

@ -1204,7 +1204,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_unlocked (aggpad);
buf = gst_aggregator_pad_steal_buffer (aggpad);
if (buf)
gst_buffer_unref (buf);
}
@ -1213,7 +1213,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_unlocked (aggpad);
GstBuffer *aggpadbuf = gst_aggregator_pad_steal_buffer (aggpad);
/* skip gap buffer */
GST_LOG_OBJECT (pad, "skipping GAP buffer");
@ -1335,7 +1335,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_unlocked (aggpad);
buf = gst_aggregator_pad_steal_buffer (aggpad);
if (buf)
gst_buffer_unref (buf);
GST_DEBUG_OBJECT (pad, "Finished mixing buffer, waiting for next");