streamsynchronizer: force fallback buffer_alloc when other pad not available
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 3 Jan 2012 10:04:23 +0000 (11:04 +0100)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 3 Jan 2012 10:07:17 +0000 (11:07 +0100)
... 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.

gst/playback/gststreamsynchronizer.c

index 3f2b8a8..b71dcb3 100644 (file)
@@ -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));