aggregator: Remove pad iterator function

Use new gst_element_foreach_sink_pad() from core instead.

https://bugzilla.gnome.org/show_bug.cgi?id=785679
This commit is contained in:
Olivier Crête 2017-08-02 12:08:26 -04:00 committed by Tim-Philipp Müller
parent 2f3fbf24bc
commit e9fafb3e17
2 changed files with 0 additions and 86 deletions

View file

@ -356,87 +356,6 @@ enum
static GstFlowReturn gst_aggregator_pad_chain_internal (GstAggregator * self, static GstFlowReturn gst_aggregator_pad_chain_internal (GstAggregator * self,
GstAggregatorPad * aggpad, GstBuffer * buffer, gboolean head); GstAggregatorPad * aggpad, GstBuffer * buffer, gboolean head);
/**
* gst_aggregator_iterate_sinkpads:
* @self: The #GstAggregator
* @func: (scope call): The function to call.
* @user_data: (closure): The data to pass to @func.
*
* Iterate the sinkpads of aggregator to call a function on them.
*
* This method guarantees that @func will be called only once for each
* sink pad.
*
* Returns: %FALSE if there are no sinkpads or if @func returned %FALSE
*/
gboolean
gst_aggregator_iterate_sinkpads (GstAggregator * self,
GstAggregatorPadForeachFunc func, gpointer user_data)
{
gboolean result = FALSE;
GstIterator *iter;
gboolean done = FALSE;
GValue item = { 0, };
GList *seen_pads = NULL;
iter = gst_element_iterate_sink_pads (GST_ELEMENT (self));
if (!iter)
goto no_iter;
while (!done) {
switch (gst_iterator_next (iter, &item)) {
case GST_ITERATOR_OK:
{
GstAggregatorPad *pad;
pad = g_value_get_object (&item);
/* if already pushed, skip. FIXME, find something faster to tag pads */
if (pad == NULL || g_list_find (seen_pads, pad)) {
g_value_reset (&item);
break;
}
GST_LOG_OBJECT (pad, "calling function %s on pad",
GST_DEBUG_FUNCPTR_NAME (func));
result = func (self, pad, user_data);
done = !result;
seen_pads = g_list_prepend (seen_pads, pad);
g_value_reset (&item);
break;
}
case GST_ITERATOR_RESYNC:
gst_iterator_resync (iter);
break;
case GST_ITERATOR_ERROR:
GST_ERROR_OBJECT (self,
"Could not iterate over internally linked pads");
done = TRUE;
break;
case GST_ITERATOR_DONE:
done = TRUE;
break;
}
}
g_value_unset (&item);
gst_iterator_free (iter);
if (seen_pads == NULL) {
GST_DEBUG_OBJECT (self, "No pad seen");
return FALSE;
}
g_list_free (seen_pads);
no_iter:
return result;
}
static gboolean static gboolean
gst_aggregator_pad_queue_is_empty (GstAggregatorPad * pad) gst_aggregator_pad_queue_is_empty (GstAggregatorPad * pad)
{ {

View file

@ -330,11 +330,6 @@ typedef gboolean (*GstAggregatorPadForeachFunc) (GstAggregator
GstAggregatorPad * aggregator_pad, GstAggregatorPad * aggregator_pad,
gpointer user_data); gpointer user_data);
GST_EXPORT
gboolean gst_aggregator_iterate_sinkpads (GstAggregator * self,
GstAggregatorPadForeachFunc func,
gpointer user_data);
GST_EXPORT GST_EXPORT
GstClockTime gst_aggregator_get_latency (GstAggregator * self); GstClockTime gst_aggregator_get_latency (GstAggregator * self);