pulsesink: Make sure to filter caps in all cases during CAPS query
authorArun Raghavan <arun@centricular.com>
Mon, 9 Mar 2015 05:54:58 +0000 (11:24 +0530)
committerArun Raghavan <git@arunraghavan.net>
Mon, 9 Mar 2015 06:25:40 +0000 (11:55 +0530)
We were skipping the filter step while returning template caps, for
example.

ext/pulse/pulsesink.c

index eda321f..f7685f7 100644 (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);