Handle _push() return values.
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Tue, 16 Aug 2005 09:54:10 +0000 (09:54 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Tue, 16 Aug 2005 09:54:10 +0000 (09:54 +0000)
Original commit message from CVS:
* ext/faad/gstfaad.c: (gst_faad_event), (gst_faad_chain):
* gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header):
Handle _push() return values.

ChangeLog
common
ext/faad/gstfaad.c
gst/qtdemux/qtdemux.c

index b501c91..88818ad 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-08-16  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * ext/faad/gstfaad.c: (gst_faad_event), (gst_faad_chain):
+       * gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header):
+         Handle _push() return values.
+
 2005-08-15  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
 
        * ext/faad/gstfaad.c: (gst_faad_event):
diff --git a/common b/common
index fae12c8..8ff526a 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit fae12c87727e1a701975d0e72078e844c25f499c
+Subproject commit 8ff526a316f9b576e727b8e32cba0a53cdec07a6
index 886193c..0ad592b 100644 (file)
@@ -669,6 +669,9 @@ gst_faad_event (GstPad * pad, GstEvent * event)
       GST_STREAM_UNLOCK (pad);
       break;
     }
+    case GST_EVENT_FLUSH_START:
+      res = gst_pad_push_event (faad->srcpad, event);
+      break;
     default:
       GST_STREAM_LOCK (pad);
       res = gst_pad_push_event (faad->srcpad, event);
@@ -839,7 +842,7 @@ gst_faad_chain (GstPad * pad, GstBuffer * buffer)
         r = gst_pad_alloc_buffer (faad->srcpad, 0, bufsize, caps, &outbuf);
         if (r != GST_FLOW_OK) {
           GST_DEBUG ("Failed to allocate buffer");
-          ret = GST_FLOW_OK;    /* CHECK: or return something else? */
+          ret = r;              //GST_FLOW_OK;    /* CHECK: or return something else? */
           goto out;
         }
 
@@ -855,7 +858,9 @@ gst_faad_chain (GstPad * pad, GstBuffer * buffer)
         GST_DEBUG ("pushing buffer, off=%" G_GUINT64_FORMAT ", ts=%"
             GST_TIME_FORMAT, GST_BUFFER_OFFSET (outbuf),
             GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (outbuf)));
-        gst_pad_push (faad->srcpad, outbuf);
+        if ((ret = gst_pad_push (faad->srcpad, outbuf)) != GST_FLOW_OK &&
+            ret != GST_FLOW_NOT_LINKED)
+          goto out;
       }
     }
   }
index b419e24..3a5dbcd 100644 (file)
@@ -507,6 +507,7 @@ gst_qtdemux_loop_header (GstPad * pad)
   int offset;
   guint64 cur_offset;
   int size;
+  GstFlowReturn ret;
 
   /* FIXME _tell gets the offset wrong */
   //cur_offset = gst_bytestream_tell(qtdemux->bs);
@@ -683,7 +684,9 @@ gst_qtdemux_loop_header (GstPad * pad)
         GST_DEBUG ("Pushing buf with time=%" GST_TIME_FORMAT,
             GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)));
         gst_buffer_set_caps (buf, stream->caps);
-        gst_pad_push (stream->pad, buf);
+        ret = gst_pad_push (stream->pad, buf);
+        if (ret != GST_FLOW_OK && ret != GST_FLOW_NOT_LINKED)
+          goto pause;
 
         GST_INFO ("pushing buffer on %" GST_PTR_FORMAT, stream->pad);
       }