gst/adder/gstadder.c: When using gst_element_iterate_pads() one has to unref every...
authorSebastian Dröge <slomo@circular-chaos.org>
Mon, 2 Jun 2008 12:20:35 +0000 (12:20 +0000)
committerSebastian Dröge <slomo@circular-chaos.org>
Mon, 2 Jun 2008 12:20:35 +0000 (12:20 +0000)
Original commit message from CVS:
* gst/adder/gstadder.c: (gst_adder_query_duration),
(gst_adder_query_latency):
When using gst_element_iterate_pads() one has to unref every pad
after usage.

ChangeLog
gst/adder/gstadder.c

index 512da56..339ad47 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-06-02  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * gst/adder/gstadder.c: (gst_adder_query_duration),
+       (gst_adder_query_latency):
+       When using gst_element_iterate_pads() one has to unref every pad
+       after usage.
+
 2008-05-31  Mark Nauwelaerts  <mnauw@users.sf.net>
 
        * gst-libs/gst/audio/gstbaseaudiosrc.c:
index 1f7ed3e..8974152 100644 (file)
@@ -115,12 +115,17 @@ GST_STATIC_PAD_TEMPLATE ("sink%d",
     );
 
 static void gst_adder_class_init (GstAdderClass * klass);
+
 static void gst_adder_init (GstAdder * adder);
+
 static void gst_adder_finalize (GObject * object);
 
 static gboolean gst_adder_setcaps (GstPad * pad, GstCaps * caps);
+
 static gboolean gst_adder_query (GstPad * pad, GstQuery * query);
+
 static gboolean gst_adder_src_event (GstPad * pad, GstEvent * event);
+
 static gboolean gst_adder_sink_event (GstPad * pad, GstEvent * event);
 
 static GstPad *gst_adder_request_new_pad (GstElement * element,
@@ -188,6 +193,7 @@ static GstCaps *
 gst_adder_sink_getcaps (GstPad * pad)
 {
   GstAdder *adder;
+
   GstCaps *result, *peercaps, *sinkcaps;
 
   adder = GST_ADDER (GST_PAD_PARENT (pad));
@@ -222,8 +228,11 @@ static gboolean
 gst_adder_setcaps (GstPad * pad, GstCaps * caps)
 {
   GstAdder *adder;
+
   GList *pads;
+
   GstStructure *structure;
+
   const char *media_type;
 
   adder = GST_ADDER (GST_PAD_PARENT (pad));
@@ -333,9 +342,13 @@ static gboolean
 gst_adder_query_duration (GstAdder * adder, GstQuery * query)
 {
   gint64 max;
+
   gboolean res;
+
   GstFormat format;
+
   GstIterator *it;
+
   gboolean done;
 
   /* parse format */
@@ -348,6 +361,7 @@ gst_adder_query_duration (GstAdder * adder, GstQuery * query)
   it = gst_element_iterate_sink_pads (GST_ELEMENT_CAST (adder));
   while (!done) {
     GstIteratorResult ires;
+
     gpointer item;
 
     ires = gst_iterator_next (it, &item);
@@ -358,6 +372,7 @@ gst_adder_query_duration (GstAdder * adder, GstQuery * query)
       case GST_ITERATOR_OK:
       {
         GstPad *pad = GST_PAD_CAST (item);
+
         gint64 duration;
 
         /* ask sink peer for duration */
@@ -373,6 +388,7 @@ gst_adder_query_duration (GstAdder * adder, GstQuery * query)
           else if (duration > max)
             max = duration;
         }
+        gst_object_unref (pad);
         break;
       }
       case GST_ITERATOR_RESYNC:
@@ -402,9 +418,13 @@ static gboolean
 gst_adder_query_latency (GstAdder * adder, GstQuery * query)
 {
   GstClockTime min, max;
+
   gboolean live;
+
   gboolean res;
+
   GstIterator *it;
+
   gboolean done;
 
   res = TRUE;
@@ -418,6 +438,7 @@ gst_adder_query_latency (GstAdder * adder, GstQuery * query)
   it = gst_element_iterate_sink_pads (GST_ELEMENT_CAST (adder));
   while (!done) {
     GstIteratorResult ires;
+
     gpointer item;
 
     ires = gst_iterator_next (it, &item);
@@ -428,8 +449,11 @@ gst_adder_query_latency (GstAdder * adder, GstQuery * query)
       case GST_ITERATOR_OK:
       {
         GstPad *pad = GST_PAD_CAST (item);
+
         GstQuery *peerquery;
+
         GstClockTime min_cur, max_cur;
+
         gboolean live_cur;
 
         peerquery = gst_query_new_latency ();
@@ -453,6 +477,7 @@ gst_adder_query_latency (GstAdder * adder, GstQuery * query)
         }
 
         gst_query_unref (peerquery);
+        gst_object_unref (pad);
         break;
       }
       case GST_ITERATOR_RESYNC:
@@ -485,6 +510,7 @@ static gboolean
 gst_adder_query (GstPad * pad, GstQuery * query)
 {
   GstAdder *adder = GST_ADDER (gst_pad_get_parent (pad));
+
   gboolean res = FALSE;
 
   switch (GST_QUERY_TYPE (query)) {
@@ -553,6 +579,7 @@ static gboolean
 forward_event (GstAdder * adder, GstEvent * event)
 {
   gboolean ret;
+
   GstIterator *it;
   GValue vret = { 0 };
 
@@ -578,6 +605,7 @@ static gboolean
 gst_adder_src_event (GstPad * pad, GstEvent * event)
 {
   GstAdder *adder;
+
   gboolean result;
 
   adder = GST_ADDER (gst_pad_get_parent (pad));
@@ -590,7 +618,9 @@ gst_adder_src_event (GstPad * pad, GstEvent * event)
     case GST_EVENT_SEEK:
     {
       GstSeekFlags flags;
+
       GstSeekType curtype;
+
       gint64 cur;
 
       /* parse the seek parameters */
@@ -638,6 +668,7 @@ static gboolean
 gst_adder_sink_event (GstPad * pad, GstEvent * event)
 {
   GstAdder *adder;
+
   gboolean ret;
 
   adder = GST_ADDER (gst_pad_get_parent (pad));
@@ -670,6 +701,7 @@ static void
 gst_adder_class_init (GstAdderClass * klass)
 {
   GObjectClass *gobject_class;
+
   GstElementClass *gstelement_class;
 
   gobject_class = (GObjectClass *) klass;
@@ -737,8 +769,11 @@ gst_adder_request_new_pad (GstElement * element, GstPadTemplate * templ,
     const gchar * unused)
 {
   gchar *name;
+
   GstAdder *adder;
+
   GstPad *newpad;
+
   gint padcount;
 
   if (templ->direction != GST_PAD_SINK)
@@ -813,11 +848,17 @@ gst_adder_collected (GstCollectPads * pads, gpointer user_data)
    * - push out the output buffer
    */
   GstAdder *adder;
+
   guint size;
+
   GSList *collected;
+
   GstBuffer *outbuf;
+
   GstFlowReturn ret;
+
   gpointer outbytes;
+
   gboolean empty = TRUE;
 
   adder = GST_ADDER (user_data);
@@ -840,8 +881,11 @@ gst_adder_collected (GstCollectPads * pads, gpointer user_data)
 
   for (collected = pads->data; collected; collected = g_slist_next (collected)) {
     GstCollectData *data;
+
     guint8 *bytes;
+
     guint len;
+
     GstBuffer *inbuf;
 
     data = (GstCollectData *) collected->data;
@@ -976,6 +1020,7 @@ static GstStateChangeReturn
 gst_adder_change_state (GstElement * element, GstStateChange transition)
 {
   GstAdder *adder;
+
   GstStateChangeReturn ret;
 
   adder = GST_ADDER (element);