mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-10 10:04:23 +00:00
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.
This commit is contained in:
parent
9fa61c528d
commit
1d37b272ce
2 changed files with 52 additions and 0 deletions
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue