+2008-03-24 Wim Taymans <wim.taymans@collabora.co.uk>
+
+ * plugins/elements/gstmultiqueue.c: (single_queue_overrun_cb),
+ (single_queue_underrun_cb):
+ When trying to make room in the queue, bump the max allowed buffers
+ bigger than the current amount of buffers in the queue. this fixes some
+ nasty deadlocks in multiqueue when dynamically changing the limits of
+ the queue.
+
2008-03-24 Wim Taymans <wim.taymans@collabora.co.uk>
Patch by: José Alburquerque <jaalburqu at svn dot gnome dot org>
if (gst_data_queue_is_empty (ssq->queue)) {
GST_LOG_OBJECT (mq, "Queue %d is empty", ssq->id);
if (IS_FILLED (visible, size.visible)) {
- sq->max_size.visible++;
+ sq->max_size.visible = size.visible + 1;
GST_DEBUG_OBJECT (mq,
"Another queue is empty, bumping single queue %d max visible to %d",
sq->id, sq->max_size.visible);
gst_data_queue_get_level (sq->queue, &size);
if (IS_FILLED (visible, size.visible)) {
- sq->max_size.visible++;
+ sq->max_size.visible = size.visible + 1;
GST_DEBUG_OBJECT (mq,
"queue %d is filled, bumping its max visible to %d", sq->id,
sq->max_size.visible);