diff --git a/plugins/elements/gstmultiqueue.c b/plugins/elements/gstmultiqueue.c
index b26dffc..bee2203 100644
--- a/plugins/elements/gstmultiqueue.c
+++ b/plugins/elements/gstmultiqueue.c
@@ -1900,6 +1900,7 @@ single_queue_overrun_cb (GstDataQueue * dq, GstSingleQueue * sq)
   GList *tmp;
   GstDataQueueSize size;
   gboolean filled = TRUE;
+  gboolean all_not_linked = TRUE;
 
   gst_data_queue_get_level (sq->queue, &size);
 
@@ -1925,14 +1926,17 @@ single_queue_overrun_cb (GstDataQueue * dq, GstSingleQueue * sq)
     if (oq == sq)
       continue;
 
-    if (oq->srcresult == GST_FLOW_NOT_LINKED) {
+    if (oq->srcresult == GST_FLOW_NOT_LINKED && (!all_not_linked || tmp->next)) {
       GST_LOG_OBJECT (mq, "Queue %d is not-linked", oq->id);
       continue;
     }
 
+    all_not_linked = FALSE;
+
     GST_LOG_OBJECT (mq, "Checking Queue %d", oq->id);
 
-    if (gst_data_queue_is_empty (oq->queue)) {
+    if (gst_data_queue_is_empty (oq->queue)
+        || oq->srcresult == GST_FLOW_NOT_LINKED) {
       GST_LOG_OBJECT (mq, "Queue %d is empty", oq->id);
       if (IS_FILLED (sq, visible, size.visible)) {
         sq->max_size.visible = size.visible + 1;
