From 829eafad0eef9c311c29c07f7d6b211969dda4fb Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 9 Apr 2012 16:40:47 +0200 Subject: [PATCH] multiqueue: Don't use buffer after pushing it downstream --- plugins/elements/gstmultiqueue.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins/elements/gstmultiqueue.c b/plugins/elements/gstmultiqueue.c index 9891b93..11344e5 100644 --- a/plugins/elements/gstmultiqueue.c +++ b/plugins/elements/gstmultiqueue.c @@ -1193,6 +1193,7 @@ gst_multi_queue_loop (GstPad * pad) guint32 newid; GstFlowReturn result; GstClockTime next_time; + gboolean is_buffer; sq = (GstSingleQueue *) gst_pad_get_element_private (pad); mq = sq->mqueue; @@ -1214,6 +1215,8 @@ gst_multi_queue_loop (GstPad * pad) object = gst_multi_queue_item_steal_object (item); gst_multi_queue_item_destroy (item); + is_buffer = GST_IS_BUFFER (object); + /* Get running time of the item. Events will have GST_CLOCK_TIME_NONE */ next_time = get_running_time (&sq->src_segment, object, TRUE); @@ -1323,6 +1326,7 @@ gst_multi_queue_loop (GstPad * pad) /* Try to push out the new object */ result = gst_single_queue_push_one (mq, sq, object); + object = NULL; /* Check if we pushed something already and if this is * now a switch from an active to a non-active stream. @@ -1358,14 +1362,12 @@ gst_multi_queue_loop (GstPad * pad) } } - if (GST_IS_BUFFER (object)) + if (is_buffer) sq->pushed = TRUE; sq->srcresult = result; sq->last_oldid = newid; GST_MULTI_QUEUE_MUTEX_UNLOCK (mq); - object = NULL; - if (result != GST_FLOW_OK && result != GST_FLOW_NOT_LINKED && result != GST_FLOW_UNEXPECTED) goto out_flushing; -- 2.7.4