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