inputselector: Always proxy position/duration query
authorSeungha Yang <sh.yang@lge.com>
Mon, 6 Mar 2017 23:21:48 +0000 (08:21 +0900)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 7 Mar 2017 10:48:47 +0000 (12:48 +0200)
active-pad switch causes reconfigure event with lock taken,
and upstream element might query the current position or duration
before returning the reconfigure event.
Meanwhile, gst_input_selector_get_linked_pad() is used to get srcpad
inside of default query handle, and it takes also lock.
Since inputselector is still locked by active-pad switch, and so the query
cannot be handled further.

https://bugzilla.gnome.org/show_bug.cgi?id=775445

plugins/elements/gstinputselector.c

index d842c29..f3f95e6 100644 (file)
@@ -664,7 +664,10 @@ gst_selector_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
 
   switch (GST_QUERY_TYPE (query)) {
     case GST_QUERY_CAPS:
-      /* always proxy caps query, regardless of active pad or not */
+    case GST_QUERY_POSITION:
+    case GST_QUERY_DURATION:
+      /* always proxy caps/position/duration query, regardless of active pad or not
+       * See https://bugzilla.gnome.org/show_bug.cgi?id=775445 */
       res = gst_pad_peer_query (self->srcpad, query);
       break;
     case GST_QUERY_ALLOCATION:{