GstBin *bin = bit->bin;
/* empty queue, we have to find a next best element */
- if (g_queue_is_empty (bit->queue)) {
-
+ if (g_queue_is_empty (&bit->queue)) {
- GstElement *best;
-
bit->best = NULL;
bit->best_deg = G_MAXINT;
g_list_foreach (bin->children, (GFunc) find_element, bit);
}
} else {
/* everything added to the queue got reffed */
- best = g_queue_pop_head (bit->queue);
- *result = g_queue_pop_head (&bit->queue);
++ best = g_queue_pop_head (&bit->queue);
+ g_value_set_object (result, best);
+ gst_object_unref (best);
}
- GST_DEBUG_OBJECT (bin, "queue head gives %s", GST_ELEMENT_NAME (*result));
+ GST_DEBUG_OBJECT (bin, "queue head gives %s", GST_ELEMENT_NAME (best));
/* update degrees of linked elements */
- update_degree (GST_ELEMENT_CAST (*result), bit);
+ update_degree (best, bit);
return GST_ITERATOR_OK;
}
GstBin *bin = bit->bin;
GST_DEBUG_OBJECT (bin, "free");
- clear_queue (bit->queue);
- g_queue_free (bit->queue);
+ clear_queue (&bit->queue);
g_hash_table_destroy (bit->hash);
gst_object_unref (bin);
- g_free (bit);
}
/* should be called with the bin LOCK held */
/* add buffer to the statistics */
queue->cur_level.buffers++;
- queue->cur_level.bytes += GST_BUFFER_SIZE (buffer);
+ queue->cur_level.bytes += gst_buffer_get_size (buffer);
apply_buffer (queue, buffer, &queue->sink_segment, TRUE, TRUE);
- g_queue_push_tail (queue->queue, item);
+ g_queue_push_tail (&queue->queue, item);
GST_QUEUE_SIGNAL_ADD (queue);
}
GST_CAT_LOG_OBJECT (queue_dataflow, queue, "got EOS from upstream");
queue->eos = TRUE;
break;
- case GST_EVENT_NEWSEGMENT:
+ case GST_EVENT_SEGMENT:
apply_segment (queue, event, &queue->sink_segment, TRUE);
/* if the queue is empty, apply sink segment on the source */
- if (queue->queue->length == 0) {
+ if (queue->queue.length == 0) {
GST_CAT_LOG_OBJECT (queue_dataflow, queue, "Apply segment on srcpad");
apply_segment (queue, event, &queue->src_segment, FALSE);
queue->newseg_applied_to_src = TRUE;