summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-01-03 11:04:23 +0100
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2012-01-03 11:07:17 +0100
commit3e0d35aec41ad63b978a8c7be62dfb37fdd93650 (patch)
tree2f1223b7ea6d0ad25fe4f6c70b9b8686e7a78ec3
parentaf28016d0acd2141a23de8dee62b697c987a025f (diff)
streamsynchronizer: force fallback buffer_alloc when other pad not available
... to avoid unnecessary spurious errors (upon e.g. shutdown). If a real error is applicable in this unusual circumstance (missing other pad), other (STREAM_LOCK protected) call paths can take care of that.
-rw-r--r--gst/playback/gststreamsynchronizer.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c
index 3f2b8a8df..b71dcb305 100644
--- a/gst/playback/gststreamsynchronizer.c
+++ b/gst/playback/gststreamsynchronizer.c
@@ -565,7 +565,7 @@ gst_stream_synchronizer_sink_bufferalloc (GstPad * pad, guint64 offset,
guint size, GstCaps * caps, GstBuffer ** buf)
{
GstPad *opad;
- GstFlowReturn ret = GST_FLOW_ERROR;
+ GstFlowReturn ret = GST_FLOW_OK;
GST_LOG_OBJECT (pad, "Allocating buffer: size=%u", size);
@@ -573,6 +573,10 @@ gst_stream_synchronizer_sink_bufferalloc (GstPad * pad, guint64 offset,
if (opad) {
ret = gst_pad_alloc_buffer (opad, offset, size, caps, buf);
gst_object_unref (opad);
+ } else {
+ /* may have been released during shutdown;
+ * silently trigger fallback */
+ *buf = NULL;
}
GST_LOG_OBJECT (pad, "Allocation: %s", gst_flow_get_name (ret));