}
return result;
-
-
-
}
static gboolean
static void
gst_multi_queue_item_destroy (GstMultiQueueItem * item)
{
- if (item->object)
+ if (item->object && !GST_IS_QUERY (item->object))
gst_mini_object_unref (item->object);
g_slice_free (GstMultiQueueItem, item);
}
compute_high_time (mq);
compute_high_id (mq);
wake_up_next_non_linked (mq);
+ sq->last_query = FALSE;
+ g_cond_signal (&sq->query_handled);
GST_MULTI_QUEUE_MUTEX_UNLOCK (mq);
/* upstream needs to see fatal result ASAP to shut things down,
/* All pads start off linked until they push one buffer */
sq->srcresult = GST_FLOW_OK;
sq->pushed = FALSE;
+ gst_data_queue_set_flushing (sq->queue, FALSE);
} else {
sq->srcresult = GST_FLOW_FLUSHING;
+ sq->last_query = FALSE;
+ g_cond_signal (&sq->query_handled);
+ gst_data_queue_set_flushing (sq->queue, TRUE);
gst_data_queue_flush (sq->queue);
}
res = TRUE;