diff options
author | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2012-02-05 18:24:08 +0100 |
---|---|---|
committer | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2012-02-07 11:29:01 +0100 |
commit | 20d46e8d6cf94952d2cda25c22e2243c71a9b793 (patch) | |
tree | 70607f476894c36cf0985c78d439c76a0b9b3cd8 | |
parent | bfeff67c100f741b9511c05157f9f0853d78eaba (diff) | |
download | gstreamer-vaapi-20d46e8d6cf94952d2cda25c22e2243c71a9b793.tar.gz |
plugins: fix pad template ref leaks.
-rw-r--r-- | gst/vaapi/gstvaapiconvert.c | 15 | ||||
-rw-r--r-- | gst/vaapi/gstvaapidecode.c | 30 | ||||
-rw-r--r-- | gst/vaapi/gstvaapisink.c | 8 |
3 files changed, 25 insertions, 28 deletions
diff --git a/gst/vaapi/gstvaapiconvert.c b/gst/vaapi/gstvaapiconvert.c index 729445f9..e359b0e4 100644 --- a/gst/vaapi/gstvaapiconvert.c +++ b/gst/vaapi/gstvaapiconvert.c @@ -168,20 +168,19 @@ static void gst_vaapiconvert_base_init(gpointer klass) { GstElementClass * const element_class = GST_ELEMENT_CLASS(klass); + GstPadTemplate *pad_template; gst_element_class_set_details(element_class, &gst_vaapiconvert_details); /* sink pad */ - gst_element_class_add_pad_template( - element_class, - gst_static_pad_template_get(&gst_vaapiconvert_sink_factory) - ); + pad_template = gst_static_pad_template_get(&gst_vaapiconvert_sink_factory); + gst_element_class_add_pad_template(element_class, pad_template); + gst_object_unref(pad_template); /* src pad */ - gst_element_class_add_pad_template( - element_class, - gst_static_pad_template_get(&gst_vaapiconvert_src_factory) - ); + pad_template = gst_static_pad_template_get(&gst_vaapiconvert_src_factory); + gst_element_class_add_pad_template(element_class, pad_template); + gst_object_unref(pad_template); } static void diff --git a/gst/vaapi/gstvaapidecode.c b/gst/vaapi/gstvaapidecode.c index bed8a1f8..15e01f82 100644 --- a/gst/vaapi/gstvaapidecode.c +++ b/gst/vaapi/gstvaapidecode.c @@ -343,20 +343,19 @@ static void gst_vaapidecode_base_init(gpointer klass) { GstElementClass * const element_class = GST_ELEMENT_CLASS(klass); + GstPadTemplate *pad_template; gst_element_class_set_details(element_class, &gst_vaapidecode_details); /* sink pad */ - gst_element_class_add_pad_template( - element_class, - gst_static_pad_template_get(&gst_vaapidecode_sink_factory) - ); + pad_template = gst_static_pad_template_get(&gst_vaapidecode_sink_factory); + gst_element_class_add_pad_template(element_class, pad_template); + gst_object_unref(pad_template); /* src pad */ - gst_element_class_add_pad_template( - element_class, - gst_static_pad_template_get(&gst_vaapidecode_src_factory) - ); + pad_template = gst_static_pad_template_get(&gst_vaapidecode_src_factory); + gst_element_class_add_pad_template(element_class, pad_template); + gst_object_unref(pad_template); } static void @@ -639,6 +638,7 @@ static void gst_vaapidecode_init(GstVaapiDecode *decode, GstVaapiDecodeClass *klass) { GstElementClass * const element_class = GST_ELEMENT_CLASS(klass); + GstPadTemplate *pad_template; decode->display = NULL; decode->decoder = NULL; @@ -650,10 +650,9 @@ gst_vaapidecode_init(GstVaapiDecode *decode, GstVaapiDecodeClass *klass) decode->is_ready = FALSE; /* Pad through which data comes in to the element */ - decode->sinkpad = gst_pad_new_from_template( - gst_element_class_get_pad_template(element_class, "sink"), - "sink" - ); + pad_template = gst_element_class_get_pad_template(element_class, "sink"); + decode->sinkpad = gst_pad_new_from_template(pad_template, "sink"); + gst_object_unref(pad_template); decode->sinkpad_caps = NULL; gst_pad_set_getcaps_function(decode->sinkpad, gst_vaapidecode_get_caps); @@ -663,10 +662,9 @@ gst_vaapidecode_init(GstVaapiDecode *decode, GstVaapiDecodeClass *klass) gst_element_add_pad(GST_ELEMENT(decode), decode->sinkpad); /* Pad through which data goes out of the element */ - decode->srcpad = gst_pad_new_from_template( - gst_element_class_get_pad_template(element_class, "src"), - "src" - ); + pad_template = gst_element_class_get_pad_template(element_class, "src"); + decode->srcpad = gst_pad_new_from_template(pad_template, "src"); + gst_object_unref(pad_template); decode->srcpad_caps = NULL; gst_pad_use_fixed_caps(decode->srcpad); diff --git a/gst/vaapi/gstvaapisink.c b/gst/vaapi/gstvaapisink.c index 90e3c724..6d5b57b4 100644 --- a/gst/vaapi/gstvaapisink.c +++ b/gst/vaapi/gstvaapisink.c @@ -829,13 +829,13 @@ static void gst_vaapisink_base_init(gpointer klass) { GstElementClass * const element_class = GST_ELEMENT_CLASS(klass); + GstPadTemplate *pad_template; gst_element_class_set_details(element_class, &gst_vaapisink_details); - gst_element_class_add_pad_template( - element_class, - gst_static_pad_template_get(&gst_vaapisink_sink_factory) - ); + pad_template = gst_static_pad_template_get(&gst_vaapisink_sink_factory); + gst_element_class_add_pad_template(element_class, pad_template); + gst_object_unref(pad_template); } static void |