multiqueue: check filled state of queues even if another one is empty
authorVincent Penquerc'h <vincent.penquerch@collabora.co.uk>
Mon, 3 Oct 2011 11:34:20 +0000 (12:34 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 24 Nov 2011 09:38:34 +0000 (10:38 +0100)
This will avoid a case where overrun is never signalled if some
stream never produces any data, causing playbin2 to not end preroll.

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

plugins/elements/gstmultiqueue.c

index 0c226b6a7bd08e69bc0eb6369a39ccb4c44ea278..89d2289397e770ee548a414609734870eecabf05 100644 (file)
@@ -1783,8 +1783,6 @@ single_queue_overrun_cb (GstDataQueue * dq, GstSingleQueue * sq)
             "Another queue is empty, bumping single queue %d max visible to %d",
             sq->id, sq->max_size.visible);
       }
-      GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
-      goto beach;
     }
     /* check if we reached the hard time/bytes limits */
     gst_data_queue_get_level (oq->queue, &ssize);
@@ -1818,7 +1816,6 @@ single_queue_overrun_cb (GstDataQueue * dq, GstSingleQueue * sq)
     g_signal_emit (mq, gst_multi_queue_signals[SIGNAL_OVERRUN], 0);
   }
 
-beach:
   return;
 }