From 1d37b272ce9e47e559535d786911e96c1a514a9b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 2 Jun 2008 12:20:35 +0000 Subject: [PATCH] gst/adder/gstadder.c: When using gst_element_iterate_pads() one has to unref every pad after usage. 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 | 7 +++++++ gst/adder/gstadder.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/ChangeLog b/ChangeLog index 512da56..339ad47 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-06-02 Sebastian Dröge + + * 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 * gst-libs/gst/audio/gstbaseaudiosrc.c: diff --git a/gst/adder/gstadder.c b/gst/adder/gstadder.c index 1f7ed3e..8974152 100644 --- a/gst/adder/gstadder.c +++ b/gst/adder/gstadder.c @@ -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); -- 2.7.4