* @func can modify the passed buffer pointer or its contents. The return value
* of @func define if this function returns or if the remaining buffers in
* the list should be skipped.
+ *
+ * Returns: %TRUE when @func returned %TRUE for each buffer in @list or when
+ * @list is empty.
*/
-void
+gboolean
gst_buffer_list_foreach (GstBufferList * list, GstBufferListFunc func,
gpointer user_data)
{
guint i, len;
+ gboolean ret = TRUE;
- g_return_if_fail (GST_IS_BUFFER_LIST (list));
- g_return_if_fail (func != NULL);
+ g_return_val_if_fail (GST_IS_BUFFER_LIST (list), FALSE);
+ g_return_val_if_fail (func != NULL, FALSE);
len = list->array->len;
for (i = 0; i < len;) {
GstBuffer *buf, *buf_ret;
- gboolean ret;
buf = buf_ret = g_array_index (list->array, GstBuffer *, i);
ret = func (&buf_ret, i, user_data);
if (buf_ret != NULL)
i++;
}
+ return ret;
}
/**
void gst_buffer_list_insert (GstBufferList *list, guint idx, GstBuffer *buffer);
void gst_buffer_list_remove (GstBufferList *list, guint idx, guint length);
-void gst_buffer_list_foreach (GstBufferList *list,
+gboolean gst_buffer_list_foreach (GstBufferList *list,
GstBufferListFunc func,
gpointer user_data);