summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2010-06-16 11:10:23 +0200
committerWim Taymans <wim.taymans@collabora.co.uk>2010-08-13 16:38:54 +0200
commit117d12f325be9a4a331c21dfcd8da00c7db887a9 (patch)
tree881fd94e94c911544177479fceb61fa78bbb9ff8 /plugins
parente037dd37aec8e2383bb640b4a28ace3c1a459824 (diff)
queue2: fix flushing
Diffstat (limited to 'plugins')
-rw-r--r--plugins/elements/gstqueue2.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/plugins/elements/gstqueue2.c b/plugins/elements/gstqueue2.c
index 7d5b7576e8..8f7c79218e 100644
--- a/plugins/elements/gstqueue2.c
+++ b/plugins/elements/gstqueue2.c
@@ -1917,6 +1917,14 @@ gst_queue2_handle_sink_event (GstPad * pad, GstEvent * event)
* flush_start downstream. */
gst_pad_pause_task (queue->srcpad);
GST_CAT_LOG_OBJECT (queue_dataflow, queue, "loop stopped");
+ } else {
+ GST_QUEUE2_MUTEX_LOCK (queue);
+ /* flush the sink pad */
+ queue->sinkresult = GST_FLOW_WRONG_STATE;
+ GST_QUEUE2_SIGNAL_DEL (queue);
+ GST_QUEUE2_MUTEX_UNLOCK (queue);
+
+ gst_event_unref (event);
}
goto done;
}
@@ -1944,7 +1952,10 @@ gst_queue2_handle_sink_event (GstPad * pad, GstEvent * event)
queue->segment_event_received = FALSE;
queue->is_eos = FALSE;
queue->unexpected = FALSE;
+ queue->sinkresult = GST_FLOW_OK;
GST_QUEUE2_MUTEX_UNLOCK (queue);
+
+ gst_event_unref (event);
}
goto done;
}