plugins/elements/gstqueue.c: Ensure that buffer metadata is writeable, before modifyi...
authorStefan Kost <ensonic@users.sourceforge.net>
Thu, 21 Feb 2008 10:22:36 +0000 (10:22 +0000)
committerStefan Kost <ensonic@users.sourceforge.net>
Thu, 21 Feb 2008 10:22:36 +0000 (10:22 +0000)
Original commit message from CVS:
* plugins/elements/gstqueue.c:
Ensure that buffer metadata is writeable, before modifying. Spotted by
Mike.

ChangeLog
plugins/elements/gstqueue.c

index a7f8e2b..31c1ef2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-02-21  Stefan Kost  <ensonic@users.sf.net>
+
+       * plugins/elements/gstqueue.c:
+         Ensure that buffer metadata is writeable, before modifying. Spotted by
+         Mike.
+
 2008-02-20  Stefan Kost  <ensonic@users.sf.net>
 
        * plugins/elements/gstqueue.c:
index 3a06a28..5475ca0 100644 (file)
@@ -919,7 +919,14 @@ gst_queue_chain (GstPad * pad, GstBuffer * buffer)
   }
 
   if (queue->tail_needs_discont) {
-    GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+    GstBuffer *subbuffer = gst_buffer_make_metadata_writable (buffer);
+
+    if (subbuffer) {
+      buffer = subbuffer;
+      GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+    } else {
+      GST_DEBUG_OBJECT (queue, "Could not mark buffer as DISCONT");
+    }
     queue->tail_needs_discont = FALSE;
   }
 
@@ -991,7 +998,14 @@ next:
     caps = GST_BUFFER_CAPS (buffer);
 
     if (queue->head_needs_discont) {
-      GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+      GstBuffer *subbuffer = gst_buffer_make_metadata_writable (buffer);
+
+      if (subbuffer) {
+        buffer = subbuffer;
+        GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+      } else {
+        GST_DEBUG_OBJECT (queue, "Could not mark buffer as DISCONT");
+      }
       queue->head_needs_discont = FALSE;
     }