Commit 75066960 authored by Edward Hervey's avatar Edward Hervey

gstghostpad: Forward queries in both direction

Use the peer of the internal pad to forward them, instead of the
target which only exists for the ghostpad (and not the internal
proxy pad).
parent 69d2f7a9
......@@ -191,38 +191,36 @@ gst_proxy_pad_query_default (GstPad * pad, GstObject * parent, GstQuery * query)
g_return_val_if_fail (GST_IS_PROXY_PAD (pad), FALSE);
g_return_val_if_fail (GST_IS_QUERY (query), FALSE);
switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_ACCEPT_CAPS:
case GST_QUERY_CAPS:
{
target = gst_proxy_pad_get_target (pad);
if (target) {
res = gst_pad_query (target, query);
gst_object_unref (target);
} else {
GST_DEBUG_OBJECT (pad, "no target");
/* We don't have a target, we return TRUE and we assume that any future
* target will be able to deal with any configured caps. */
gst_query_set_accept_caps_result (query, TRUE);
res = TRUE;
}
if (GST_IS_GHOST_PAD (pad))
res = gst_proxy_pad_query_caps (pad, query);
else
res = gst_pad_peer_query (GST_PROXY_PAD_INTERNAL (pad), query);
break;
}
case GST_QUERY_CAPS:
case GST_QUERY_ACCEPT_CAPS:
{
res = gst_proxy_pad_query_caps (pad, query);
break;
if (GST_IS_GHOST_PAD (pad)) {
target = gst_proxy_pad_get_target (pad);
if (target) {
res = gst_pad_query (target, query);
gst_object_unref (target);
} else {
GST_DEBUG_OBJECT (pad, "no target");
/* We don't have a target, we return TRUE and we assume that any future
* target will be able to deal with any configured caps. */
gst_query_set_accept_caps_result (query, TRUE);
res = TRUE;
}
break;
}
/* passthrough */
}
default:
{
target = gst_proxy_pad_get_target (pad);
if (target) {
res = gst_pad_query (target, query);
gst_object_unref (target);
} else {
GST_DEBUG_OBJECT (pad, "no target pad");
res = FALSE;
}
res = gst_pad_peer_query (GST_PROXY_PAD_INTERNAL (pad), query);
break;
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment