From ee2c6990165fe3f63b54d4b273e4542fc5854992 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 14 Feb 2012 13:25:25 +0100 Subject: [PATCH] tagdemux: fix src query handler We don't want to blindly forward all queries. --- gst-libs/gst/tag/gsttagdemux.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/gst-libs/gst/tag/gsttagdemux.c b/gst-libs/gst/tag/gsttagdemux.c index dd07889..6e12506 100644 --- a/gst-libs/gst/tag/gsttagdemux.c +++ b/gst-libs/gst/tag/gsttagdemux.c @@ -1340,13 +1340,17 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) GstTagDemux *demux = GST_TAG_DEMUX (parent); GstFormat format; gint64 result; - - if (!gst_pad_peer_query (demux->priv->sinkpad, query)) - return FALSE; + gboolean res = TRUE; switch (GST_QUERY_TYPE (query)) { + case GST_QUERY_SCHEDULING: + res = gst_pad_peer_query (demux->priv->sinkpad, query); + break; case GST_QUERY_POSITION: { + if (!(res = gst_pad_peer_query (demux->priv->sinkpad, query))) + goto done; + gst_query_parse_position (query, &format, &result); if (format == GST_FORMAT_BYTES) { result -= demux->priv->strip_start; @@ -1356,6 +1360,9 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) } case GST_QUERY_DURATION: { + if (!(res = gst_pad_peer_query (demux->priv->sinkpad, query))) + goto done; + gst_query_parse_duration (query, &format, &result); if (format == GST_FORMAT_BYTES) { result -= demux->priv->strip_start + demux->priv->strip_end; @@ -1364,10 +1371,11 @@ gst_tag_demux_pad_query (GstPad * pad, GstObject * parent, GstQuery * query) break; } default: + res = gst_pad_query_default (pad, parent, query); break; } - - return TRUE; +done: + return res; } static void -- 2.7.4