bufferlist: Add boxed type for GstBufferListIterator for gobject-introspection
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 14 Apr 2011 14:06:16 +0000 (16:06 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 14 Apr 2011 14:14:02 +0000 (16:14 +0200)
gst/gst.c
gst/gstbufferlist.c
gst/gstbufferlist.h

index 0e7ac8c..e109eff 100644 (file)
--- 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 ();
index 4435082..e59c56f 100644 (file)
@@ -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
index 519063f..ff5022b 100644 (file)
@@ -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);