basesink: Only answer the SEGMENT query in pull mode
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 6 Jul 2010 08:13:04 +0000 (10:13 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 16 Jul 2010 15:26:31 +0000 (17:26 +0200)
Otherwise the element handling the seeks should answer this query.

Fixes bug #623622.

libs/gst/base/gstbasesink.c

index 13e4944..324b0d3 100644 (file)
@@ -4741,10 +4741,13 @@ gst_base_sink_query (GstElement * element, GstQuery * query)
       break;
     case GST_QUERY_SEGMENT:
     {
-      /* FIXME, bring start/stop to stream time */
-      gst_query_set_segment (query, basesink->segment.rate,
-          GST_FORMAT_TIME, basesink->segment.start, basesink->segment.stop);
-      res = TRUE;
+      if (basesink->pad_mode == GST_ACTIVATE_PULL) {
+        gst_query_set_segment (query, basesink->segment.rate,
+            GST_FORMAT_TIME, basesink->segment.start, basesink->segment.stop);
+        res = TRUE;
+      } else {
+        res = gst_pad_peer_query (basesink->sinkpad, query);
+      }
       break;
     }
     case GST_QUERY_SEEKING: