diff --git a/gst/gst.c b/gst/gst.c index 0e7ac8c791..e109effdbd 100644 --- a/gst/gst.c +++ b/gst/gst.c @@ -756,6 +756,7 @@ init_post (GOptionContext * context, GOptionGroup * group, gpointer data, _gst_event_initialize (); _gst_buffer_initialize (); _gst_buffer_list_initialize (); + gst_buffer_list_iterator_get_type (); _gst_message_initialize (); _gst_tag_initialize (); gst_parse_context_get_type (); diff --git a/gst/gstbufferlist.c b/gst/gstbufferlist.c index 4435082b87..e59c56fe3d 100644 --- a/gst/gstbufferlist.c +++ b/gst/gstbufferlist.c @@ -425,6 +425,33 @@ gst_buffer_list_get (GstBufferList * list, guint group, guint idx) return NULL; } +static GstBufferListIterator * +gst_buffer_list_iterator_copy (const GstBufferListIterator * it) +{ + GstBufferListIterator *ret; + + ret = g_slice_new (GstBufferListIterator); + ret->list = it->list; + ret->next = it->next; + ret->last_returned = it->last_returned; + + return ret; +} + +GType +gst_buffer_list_iterator_get_type (void) +{ + static GType type = 0; + + if (G_UNLIKELY (type == 0)) { + type = g_boxed_type_register_static ("GstBufferListIterator", + (GBoxedCopyFunc) gst_buffer_list_iterator_copy, + (GBoxedFreeFunc) gst_buffer_list_iterator_free); + } + + return type; +} + /** * gst_buffer_list_iterate: * @list: a #GstBufferList diff --git a/gst/gstbufferlist.h b/gst/gstbufferlist.h index 519063f6dd..ff5022ba94 100644 --- a/gst/gstbufferlist.h +++ b/gst/gstbufferlist.h @@ -35,6 +35,8 @@ G_BEGIN_DECLS #define GST_BUFFER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_BUFFER_LIST, GstBufferListClass)) #define GST_BUFFER_LIST_CAST(obj) ((GstBufferList *)obj) +#define GST_TYPE_BUFFER_LIST_ITERATOR (gst_buffer_list_iterator_get_type ()) + typedef struct _GstBufferList GstBufferList; typedef struct _GstBufferListClass GstBufferListClass; typedef struct _GstBufferListIterator GstBufferListIterator; @@ -215,6 +217,7 @@ void gst_buffer_list_foreach (GstBufferList *l GstBuffer * gst_buffer_list_get (GstBufferList *list, guint group, guint idx); /* iterator */ +GType gst_buffer_list_iterator_get_type (void); GstBufferListIterator * gst_buffer_list_iterate (GstBufferList *list); void gst_buffer_list_iterator_free (GstBufferListIterator *it);