pulsesink: Make sure to filter caps in all cases during CAPS query

We were skipping the filter step while returning template caps, for
example.
This commit is contained in:
Arun Raghavan 2015-03-09 11:24:58 +05:30 committed by Arun Raghavan
parent eeb4d2e8b1
commit 3751c87f00

View file

@ -2142,6 +2142,8 @@ gst_pulsesink_query_getcaps (GstPulseSink * psink, GstCaps * filter)
goto unlock;
}
ret = gst_caps_new_empty ();
if (pbuf->stream) {
/* We're in PAUSED or higher */
stream = pbuf->stream;
@ -2175,8 +2177,6 @@ gst_pulsesink_query_getcaps (GstPulseSink * psink, GstCaps * filter)
stream = pbuf->probe_stream;
}
ret = gst_caps_new_empty ();
if (!(o = pa_context_get_sink_info_by_name (pbuf->context,
pa_stream_get_device_name (stream), gst_pulsesink_sink_info_cb,
&device_info)))
@ -2193,6 +2193,11 @@ gst_pulsesink_query_getcaps (GstPulseSink * psink, GstCaps * filter)
gst_pulse_format_info_to_caps ((pa_format_info *) i->data));
}
unlock:
pa_threaded_mainloop_unlock (mainloop);
/* FIXME: this could be freed after device_name is got */
GST_OBJECT_UNLOCK (pbuf);
if (filter) {
GstCaps *tmp = gst_caps_intersect_full (filter, ret,
GST_CAPS_INTERSECT_FIRST);
@ -2200,11 +2205,6 @@ gst_pulsesink_query_getcaps (GstPulseSink * psink, GstCaps * filter)
ret = tmp;
}
unlock:
pa_threaded_mainloop_unlock (mainloop);
/* FIXME: this could be freed after device_name is got */
GST_OBJECT_UNLOCK (pbuf);
out:
free_device_info (&device_info);