diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2013-04-04 19:06:35 +0200 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2013-04-04 19:06:35 +0200 |
commit | c955ddc712f3b4de9ef5d822b95a6f4bd9985eb3 (patch) | |
tree | b817e6870bf710d33c7b78958c3d2a02bd9d04c5 /plugins/elements/gstqueue.c | |
parent | 6c621460313ae440fe12eab436a55d9487b01393 (diff) |
queue: start pushing again on RECONFIGURE
When we got NOT_LINKED before and we receive a RECONFIGURE event, start pushing
again on the source pad.
See https://bugzilla.gnome.org/show_bug.cgi?id=676304
Diffstat (limited to 'plugins/elements/gstqueue.c')
-rw-r--r-- | plugins/elements/gstqueue.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/plugins/elements/gstqueue.c b/plugins/elements/gstqueue.c index 5223ae0f74..e0e70302f3 100644 --- a/plugins/elements/gstqueue.c +++ b/plugins/elements/gstqueue.c @@ -1249,7 +1249,24 @@ gst_queue_handle_src_event (GstPad * pad, GstObject * parent, GstEvent * event) event, GST_EVENT_TYPE (event)); #endif - res = gst_pad_push_event (queue->sinkpad, event); + switch (GST_EVENT_TYPE (event)) { + case GST_EVENT_RECONFIGURE: + GST_QUEUE_MUTEX_LOCK (queue); + if (queue->srcresult == GST_FLOW_NOT_LINKED) { + /* when we got not linked, assume downstream is linked again now and we + * can try to start pushing again */ + queue->srcresult = GST_FLOW_OK; + gst_pad_start_task (pad, (GstTaskFunction) gst_queue_loop, pad, NULL); + } + GST_QUEUE_MUTEX_UNLOCK (queue); + + res = gst_pad_push_event (queue->sinkpad, event); + break; + default: + res = gst_pad_event_default (pad, parent, event); + break; + } + return res; } |