multiqueue: do not reduce single queue below current level
authorArnaud Vrac <avrac@freebox.fr>
Fri, 24 Jan 2014 18:19:08 +0000 (19:19 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 27 Jan 2014 18:57:35 +0000 (19:57 +0100)
When the single queue size was just bumped by 1 to allow more buffers to
be added, the buffers limit could be reduced to the current level when
setting the max-size-buffers property. This would result in a stall
since the queue would not grow anymore at this point.

Prevent this by not reducing a single queue size below the current
number of buffers + 1.

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

plugins/elements/gstmultiqueue.c

index cc2f3fb..f7ed0ea 100644 (file)
@@ -510,8 +510,8 @@ gst_multi_queue_set_property (GObject * object, guint prop_id,
         /* do not reduce max size below current level if the single queue has grown because of empty queue */
         if (new_size == 0) {
           q->max_size.visible = new_size;
-        } else {
-          q->max_size.visible = MAX (new_size, size.visible);
+        } else if (new_size > size.visible) {
+          q->max_size.visible = new_size;
         }
         tmp = g_list_next (tmp);
       };