basesink: when draining, deep copy the last buffer to unref old memory
authorThiago Santos <thiagoss@osg.samsung.com>
Fri, 13 Mar 2015 18:35:14 +0000 (18:35 +0000)
committerThiago Santos <thiagoss@osg.samsung.com>
Fri, 13 Mar 2015 18:37:04 +0000 (18:37 +0000)
Use gst_buffer_copy_deep() to force the copy of the underlying
memory instead of possibly doing a shallow copy of the buffer
and just referencing the memory

https://bugzilla.gnome.org/show_bug.cgi?id=745287

libs/gst/base/gstbasesink.c

index 748d2a2..44f2ab4 100644 (file)
@@ -4857,7 +4857,7 @@ gst_base_sink_default_query (GstBaseSink * basesink, GstQuery * query)
 
       GST_OBJECT_LOCK (basesink);
       if ((old = basesink->priv->last_buffer))
-        basesink->priv->last_buffer = gst_buffer_copy (old);
+        basesink->priv->last_buffer = gst_buffer_copy_deep (old);
       GST_OBJECT_UNLOCK (basesink);
       if (old)
         gst_buffer_unref (old);