inputselector: Always proxy position/duration query

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
This commit is contained in:
Seungha Yang 2017-03-07 08:21:48 +09:00 committed by Sebastian Dröge
parent c90d3e9d5a
commit 89082272f8

View file

@ -664,7 +664,10 @@ gst_selector_pad_query (GstPad * pad, GstObject * parent, GstQuery * query)
switch (GST_QUERY_TYPE (query)) { switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_CAPS: 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); res = gst_pad_peer_query (self->srcpad, query);
break; break;
case GST_QUERY_ALLOCATION:{ case GST_QUERY_ALLOCATION:{