aggregator: Don't block if adding to the tail of the queue
authorOlivier Crête <olivier.crete@collabora.com>
Thu, 13 Jul 2017 22:38:34 +0000 (18:38 -0400)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 2 Dec 2017 15:10:27 +0000 (15:10 +0000)
If we're adding to the tail of the queue, it's because we're converting
a gap event, so don't block there it means we're calling from the output
thread.

https://bugzilla.gnome.org/show_bug.cgi?id=784911

libs/gst/base/gstaggregator.c

index 9f4c42f..3a642d8 100644 (file)
@@ -2497,7 +2497,7 @@ gst_aggregator_pad_chain_internal (GstAggregator * self,
       aggpad->priv->first_buffer = FALSE;
     }
 
-    if (gst_aggregator_pad_has_space (self, aggpad)
+    if ((gst_aggregator_pad_has_space (self, aggpad) || !head)
         && aggpad->priv->flow_return == GST_FLOW_OK) {
       if (head)
         g_queue_push_head (&aggpad->priv->data, buffer);