audioringbuffer: check if acquired in set_timestamp

Also use GST_OBJECT_LOCK when accessing object data in set_timestamp.

https://bugzilla.gnome.org/show_bug.cgi?id=702230
This commit is contained in:
David Svensson Fors 2013-09-23 11:35:43 +02:00 committed by Sebastian Dröge
parent f330c01412
commit 09d628f8f1

View file

@ -1984,9 +1984,20 @@ gst_audio_ring_buffer_set_timestamp (GstAudioRingBuffer * buf, gint readseg,
GST_INFO_OBJECT (buf, "Storing timestamp %" GST_TIME_FORMAT
" @ %d", GST_TIME_ARGS (timestamp), readseg);
if (buf->timestamps) {
buf->timestamps[readseg] = timestamp;
} else {
GST_ERROR_OBJECT (buf, "Could not store timestamp, no timestamps buffer");
GST_OBJECT_LOCK (buf);
if (G_UNLIKELY (!buf->acquired))
goto not_acquired;
buf->timestamps[readseg] = timestamp;
done:
GST_OBJECT_UNLOCK (buf);
return;
not_acquired:
{
GST_DEBUG_OBJECT (buf, "we are not acquired");
goto done;
}
}