From 4f08d8649de617d48c5eb042b59a4521f71c61dd Mon Sep 17 00:00:00 2001 From: Johan Dahlin Date: Tue, 15 Nov 2005 19:34:39 +0000 Subject: [PATCH] Plug leaks. Original commit message from CVS: Plug leaks. --- ChangeLog | 8 ++++++++ ext/ogg/gstoggdemux.c | 16 ++++++++++------ ext/vorbis/vorbisdec.c | 29 +++++++++++++++++++---------- 3 files changed, 37 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index e4da7bfdb..2517ad8eb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2005-11-15 Johan Dahlin + + * ext/ogg/gstoggdemux.c: (gst_ogg_pad_typefind), + (gst_ogg_demux_init), (gst_ogg_demux_finalize): + * ext/vorbis/vorbisdec.c: (gst_vorbis_dec_base_init), + (gst_vorbis_dec_init): + Fix pad template leaks. + 2005-11-15 Tim-Philipp Müller * sys/xvimage/xvimagesink.c: (gst_xvimagesink_change_state): diff --git a/ext/ogg/gstoggdemux.c b/ext/ogg/gstoggdemux.c index bc306f6af..112890556 100644 --- a/ext/ogg/gstoggdemux.c +++ b/ext/ogg/gstoggdemux.c @@ -637,6 +637,8 @@ gst_ogg_pad_typefind (GstOggPad * pad, ogg_packet * packet) gst_element_factory_create (GST_ELEMENT_FACTORY (factories->data), NULL); if (element) { + GstPadTemplate *template; + /* this is ours */ gst_object_ref (element); gst_object_sink (GST_OBJECT (element)); @@ -644,9 +646,9 @@ gst_ogg_pad_typefind (GstOggPad * pad, ogg_packet * packet) /* FIXME, it might not be named "sink" */ pad->elem_pad = gst_element_get_pad (element, "sink"); gst_element_set_state (element, GST_STATE_PAUSED); - pad->elem_out = - gst_pad_new_from_template (gst_static_pad_template_get - (&internaltemplate), "internal"); + template = gst_static_pad_template_get (&internaltemplate); + pad->elem_out = gst_pad_new_from_template (template, "internal"); + g_object_unref (template); gst_pad_set_chain_function (pad->elem_out, gst_ogg_pad_internal_chain); gst_pad_set_element_private (pad->elem_out, pad); gst_pad_set_active (pad->elem_out, TRUE); @@ -1131,9 +1133,11 @@ static void gst_ogg_demux_init (GstOggDemux * ogg, GstOggDemuxClass * g_class) { /* create the sink pad */ - ogg->sinkpad = - gst_pad_new_from_template (gst_static_pad_template_get - (&ogg_demux_sink_template_factory), "sink"); + GstPadTemplate *template = gst_static_pad_template_get + (&ogg_demux_sink_template_factory); + ogg->sinkpad = gst_pad_new_from_template (template, "sink"); + g_object_unref (template); + gst_pad_set_event_function (ogg->sinkpad, gst_ogg_demux_handle_event); gst_pad_set_chain_function (ogg->sinkpad, gst_ogg_demux_chain); gst_pad_set_activate_function (ogg->sinkpad, gst_ogg_demux_sink_activate); diff --git a/ext/vorbis/vorbisdec.c b/ext/vorbis/vorbisdec.c index c6f934b3d..39bcbb3d2 100644 --- a/ext/vorbis/vorbisdec.c +++ b/ext/vorbis/vorbisdec.c @@ -95,11 +95,16 @@ static void gst_vorbis_dec_base_init (gpointer g_class) { GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); + GstPadTemplate *src_template, *sink_template; + + src_template = gst_static_pad_template_get (&vorbis_dec_src_factory); + gst_element_class_add_pad_template (element_class, src_template); + g_object_unref (src_template); + + sink_template = gst_static_pad_template_get (&vorbis_dec_sink_factory); + gst_element_class_add_pad_template (element_class, sink_template); + g_object_unref (sink_template); - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&vorbis_dec_src_factory)); - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&vorbis_dec_sink_factory)); gst_element_class_set_details (element_class, &vorbis_dec_details); } @@ -162,17 +167,21 @@ vorbis_get_query_types (GstPad * pad) static void gst_vorbis_dec_init (GstVorbisDec * dec, GstVorbisDecClass * g_class) { - dec->sinkpad = - gst_pad_new_from_template (gst_static_pad_template_get - (&vorbis_dec_sink_factory), "sink"); + GstPadTemplate *template; + + template = gst_static_pad_template_get (&vorbis_dec_sink_factory); + dec->sinkpad = gst_pad_new_from_template (template, "sink"); + g_object_unref (template); + gst_pad_set_event_function (dec->sinkpad, vorbis_dec_sink_event); gst_pad_set_chain_function (dec->sinkpad, vorbis_dec_chain); gst_pad_set_query_function (dec->sinkpad, vorbis_dec_sink_query); gst_element_add_pad (GST_ELEMENT (dec), dec->sinkpad); - dec->srcpad = - gst_pad_new_from_template (gst_static_pad_template_get - (&vorbis_dec_src_factory), "src"); + template = gst_static_pad_template_get (&vorbis_dec_src_factory); + dec->srcpad = gst_pad_new_from_template (template, "src"); + g_object_unref (template); + gst_pad_set_event_function (dec->srcpad, vorbis_dec_src_event); gst_pad_set_query_type_function (dec->srcpad, vorbis_get_query_types); gst_pad_set_query_function (dec->srcpad, vorbis_dec_src_query); -- 2.34.1