diff options
Diffstat (limited to 'plugins/elements/gstfunnel.c')
-rw-r--r-- | plugins/elements/gstfunnel.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/plugins/elements/gstfunnel.c b/plugins/elements/gstfunnel.c index f5dedcca8..6c6af2baa 100644 --- a/plugins/elements/gstfunnel.c +++ b/plugins/elements/gstfunnel.c @@ -317,6 +317,15 @@ gst_funnel_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) GST_OBJECT_LOCK (funnel); fpad->got_eos = FALSE; GST_OBJECT_UNLOCK (funnel); + } else if (GST_EVENT_TYPE (event) == GST_EVENT_GAP) { + /* If no data is coming and we receive GAP event, need to forward sticky events. */ + unlock = TRUE; + GST_PAD_STREAM_LOCK (funnel->srcpad); + GST_OBJECT_LOCK (funnel); + gst_object_replace ((GstObject **) & funnel->last_sinkpad, + GST_OBJECT (pad)); + GST_OBJECT_UNLOCK (funnel); + gst_pad_sticky_events_foreach (pad, forward_events, funnel->srcpad); } if (forward) |