diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2010-06-16 11:10:23 +0200 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2010-08-13 16:38:54 +0200 |
commit | 117d12f325be9a4a331c21dfcd8da00c7db887a9 (patch) | |
tree | 881fd94e94c911544177479fceb61fa78bbb9ff8 /plugins | |
parent | e037dd37aec8e2383bb640b4a28ace3c1a459824 (diff) |
queue2: fix flushing
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/elements/gstqueue2.c | 11 |
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; } |