summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-03-03 11:48:34 (GMT)
committerSebastian Dröge <sebastian@centricular.com>2015-03-03 11:49:47 (GMT)
commita941b4651ce769c87243c84050120c8d244588f6 (patch)
treea07a7520e60af80516e0324e5a0063a5f6b30636
parenta988871074c3467aaf0a5f714b55b8272c0813bc (diff)
downloadgstreamer-a941b4651ce769c87243c84050120c8d244588f6.tar.gz
gstreamer-a941b4651ce769c87243c84050120c8d244588f6.tar.xz
queue: Wake up the query function on errors from the loop function
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
-rw-r--r--plugins/elements/gstqueue.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/plugins/elements/gstqueue.c b/plugins/elements/gstqueue.c
index 00eb184..02055cd 100644
--- a/plugins/elements/gstqueue.c
+++ b/plugins/elements/gstqueue.c
@@ -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 */