From 85aad81647e0de0bfa46c01b6c41399a4e0e221a Mon Sep 17 00:00:00 2001 From: Hyunjun Ko Date: Wed, 24 Jun 2015 14:19:04 +0900 Subject: [PATCH] basesink: need to deep-copy last buffer list in drain https://bugzilla.gnome.org/show_bug.cgi?id=751420 --- libs/gst/base/gstbasesink.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c index 971d87a818..d44e8fc7fa 100644 --- a/libs/gst/base/gstbasesink.c +++ b/libs/gst/base/gstbasesink.c @@ -4900,13 +4900,20 @@ static void gst_base_sink_drain (GstBaseSink * basesink) { GstBuffer *old; + GstBufferList *old_list; GST_OBJECT_LOCK (basesink); if ((old = basesink->priv->last_buffer)) basesink->priv->last_buffer = gst_buffer_copy_deep (old); + + if ((old_list = basesink->priv->last_buffer_list)) + basesink->priv->last_buffer_list = gst_buffer_list_copy_deep (old_list); GST_OBJECT_UNLOCK (basesink); + if (old) gst_buffer_unref (old); + if (old_list) + gst_mini_object_unref (GST_MINI_OBJECT_CAST (old_list)); } static gboolean