Add function to reset tagsetter for element reuse.
authorStefan Kost <ensonic@users.sourceforge.net>
Tue, 16 Dec 2008 14:05:40 +0000 (14:05 +0000)
committerStefan Kost <ensonic@users.sourceforge.net>
Tue, 16 Dec 2008 14:05:40 +0000 (14:05 +0000)
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gsttagsetter.c:
* gst/gsttagsetter.h:
Add function to reset tagsetter for element reuse.
API: gst_tag_setter_flush()

ChangeLog
docs/gst/gstreamer-sections.txt
gst/gsttagsetter.c
gst/gsttagsetter.h

index 899321a..8436b71 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2008-12-16  Stefan Kost  <ensonic@users.sf.net>
 
+       * docs/gst/gstreamer-sections.txt:
+       * gst/gsttagsetter.c:
+       * gst/gsttagsetter.h:
+         Add function to reset tagsetter for element reuse.
+         API: gst_tag_setter_flush()
+
+2008-12-16  Stefan Kost  <ensonic@users.sf.net>
+
        * gst/gsttaglist.c:
          Avoid copy of empty taglist.
 
index 27bc89c..53edf87 100644 (file)
@@ -2107,6 +2107,7 @@ gst_tag_merge_mode_get_type
 <TITLE>GstTagSetter</TITLE>
 GstTagSetter
 GstTagSetterIFace
+gst_tag_setter_flush
 gst_tag_setter_merge_tags
 gst_tag_setter_add_tags
 gst_tag_setter_add_tag_values
index 06c7806..6d6f44c 100644 (file)
@@ -86,8 +86,7 @@ typedef struct
 {
   GstTagMergeMode mode;
   GstTagList *list;
-}
-GstTagData;
+} GstTagData;
 
 GType
 gst_tag_setter_get_type (void)
@@ -120,6 +119,7 @@ gst_tag_setter_get_type (void)
 
   return tag_setter_type;
 }
+
 static void
 gst_tag_data_free (gpointer p)
 {
@@ -130,6 +130,7 @@ gst_tag_data_free (gpointer p)
 
   g_free (data);
 }
+
 static GstTagData *
 gst_tag_setter_get_data (GstTagSetter * setter)
 {
@@ -148,6 +149,27 @@ gst_tag_setter_get_data (GstTagSetter * setter)
 }
 
 /**
+ * gst_tag_setter_flush:
+ * @setter: a #GstTagSetter
+ *
+ * Reset the internal taglist. Elements should call this from within the
+ * state-change handler.
+ */
+void
+gst_tag_setter_flush (GstTagSetter * setter)
+{
+  GstTagData *data;
+
+  g_return_if_fail (GST_IS_TAG_SETTER (setter));
+
+  data = gst_tag_setter_get_data (setter);
+  if (data->list) {
+    gst_tag_list_free (data->list);
+    data->list = NULL;
+  }
+}
+
+/**
  * gst_tag_setter_merge_tags:
  * @setter: a #GstTagSetter
  * @list: a tag list to merge from
index f7941c1..c024a75 100644 (file)
@@ -58,6 +58,8 @@ struct _GstTagSetterIFace
 
 GType          gst_tag_setter_get_type             (void);
 
+void           gst_tag_setter_flush                  (GstTagSetter * setter);
+
 void           gst_tag_setter_merge_tags           (GstTagSetter *     setter,
                                                     const GstTagList * list,
                                                     GstTagMergeMode    mode);