queue: Wake up the query function on errors from the loop function
authorSebastian Dröge <sebastian@centricular.com>
Tue, 3 Mar 2015 11:48:34 +0000 (12:48 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Tue, 3 Mar 2015 11:49:47 +0000 (12:49 +0100)
Otherwise we might wait forever for serialized queries to be handled as the
loop function is stopped and as such we will never ever dequeue the query and
handle it.

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

plugins/elements/gstqueue.c

index 00eb18419d9522013acc1fd71d1706f14afac8d3..02055cdbec835bf6ccc0cabaff6703424bba39bb 100644 (file)
@@ -1499,10 +1499,13 @@ out_flushing:
     gst_pad_pause_task (queue->srcpad);
     GST_CAT_LOG_OBJECT (queue_dataflow, queue,
         "pause task, reason:  %s", gst_flow_get_name (ret));
-    if (ret == GST_FLOW_FLUSHING)
+    if (ret == GST_FLOW_FLUSHING) {
       gst_queue_locked_flush (queue, FALSE);
-    else
+    } else {
       GST_QUEUE_SIGNAL_DEL (queue);
+      queue->last_query = FALSE;
+      g_cond_signal (&queue->query_handled);
+    }
     GST_QUEUE_MUTEX_UNLOCK (queue);
     /* let app know about us giving up if upstream is not expected to do so */
     /* EOS is already taken care of elsewhere */