summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGwenole Beauchesne <gwenole.beauchesne@intel.com>2012-02-05 18:24:08 +0100
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>2012-02-07 11:29:01 +0100
commit20d46e8d6cf94952d2cda25c22e2243c71a9b793 (patch)
tree70607f476894c36cf0985c78d439c76a0b9b3cd8
parentbfeff67c100f741b9511c05157f9f0853d78eaba (diff)
downloadgstreamer-vaapi-20d46e8d6cf94952d2cda25c22e2243c71a9b793.tar.gz
plugins: fix pad template ref leaks.
-rw-r--r--gst/vaapi/gstvaapiconvert.c15
-rw-r--r--gst/vaapi/gstvaapidecode.c30
-rw-r--r--gst/vaapi/gstvaapisink.c8
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