summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Vrac <avrac@freebox.fr>2014-08-26 20:14:40 +0200
committerSebastian Dröge <sebastian@centricular.com>2014-08-28 12:21:35 +0300
commitefa5a41dbc2aaf9dbb42f2dcc09de9fb9c86a0a7 (patch)
tree9e349ca35d09e86bb3bd85f2553320d1746ebf01
parentce6e24e68a17584b25aec9c789ac35449a7f05db (diff)
downloadgstreamer-efa5a41dbc2aaf9dbb42f2dcc09de9fb9c86a0a7.tar.gz
buffer: do not touch memory tag flag when copying buffer flags
The tag memory flag will be set later if the memory is also copied. This patch avoids buffers being freed needlessly in bufferpools. https://bugzilla.gnome.org/show_bug.cgi?id=735574
-rw-r--r--gst/gstbuffer.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gst/gstbuffer.c b/gst/gstbuffer.c
index 24efc56bc9..eb7077a83a 100644
--- a/gst/gstbuffer.c
+++ b/gst/gstbuffer.c
@@ -397,7 +397,11 @@ gst_buffer_copy_into (GstBuffer * dest, GstBuffer * src,
if (flags & GST_BUFFER_COPY_FLAGS) {
/* copy flags */
- GST_MINI_OBJECT_FLAGS (dest) = GST_MINI_OBJECT_FLAGS (src);
+ guint flags_mask = ~GST_BUFFER_FLAG_TAG_MEMORY;
+
+ GST_MINI_OBJECT_FLAGS (dest) =
+ (GST_MINI_OBJECT_FLAGS (src) & flags_mask) |
+ (GST_MINI_OBJECT_FLAGS (dest) & ~flags_mask);
}
if (flags & GST_BUFFER_COPY_TIMESTAMPS) {