From c0ba7985bd7b2715516784cc55d25642bcb7dd30 Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Mon, 28 Nov 2011 12:30:15 +0000 Subject: [PATCH] gstelement: add gst_element_class_add_pad_template_from_static This function helps ensure the pad template is unreffed without having to complicate the calling code. https://bugzilla.gnome.org/show_bug.cgi?id=662664 --- gst/gstelement.c | 24 ++++++++++++++++++++++++ gst/gstelement.h | 1 + win32/common/libgstreamer.def | 1 + 3 files changed, 26 insertions(+) diff --git a/gst/gstelement.c b/gst/gstelement.c index b101b6b65f..afa25b9d37 100644 --- a/gst/gstelement.c +++ b/gst/gstelement.c @@ -1331,6 +1331,30 @@ gst_element_class_add_pad_template (GstElementClass * klass, klass->numpadtemplates++; } +/** + * gst_element_class_add_static_pad_template: + * @klass: the #GstElementClass to add the pad template to. + * @templ: (transfer none): a #GstStaticPadTemplate describing the pad + * to add to the element class. + * + * Adds a padtemplate to an element class. This is mainly used in the _base_init + * functions of classes. + * + * Since: 0.10.36 + */ +void +gst_element_class_add_static_pad_template (GstElementClass * klass, + GstStaticPadTemplate * templ) +{ + GstPadTemplate *pt; + + g_return_if_fail (GST_IS_ELEMENT_CLASS (klass)); + + pt = gst_static_pad_template_get (templ); + gst_element_class_add_pad_template (klass, pt); + gst_object_unref (pt); +} + static void gst_element_class_add_meta_data (GstElementClass * klass, const gchar * key, const gchar * value) diff --git a/gst/gstelement.h b/gst/gstelement.h index e22999c7ec..5c3286fb40 100644 --- a/gst/gstelement.h +++ b/gst/gstelement.h @@ -680,6 +680,7 @@ struct _GstElementClass /* element class pad templates */ void gst_element_class_add_pad_template (GstElementClass *klass, GstPadTemplate *templ); +void gst_element_class_add_static_pad_template (GstElementClass *klass, GstStaticPadTemplate *templ); GstPadTemplate* gst_element_class_get_pad_template (GstElementClass *element_class, const gchar *name); GList* gst_element_class_get_pad_template_list (GstElementClass *element_class); diff --git a/win32/common/libgstreamer.def b/win32/common/libgstreamer.def index f7a7974e4e..1fafc21fd1 100644 --- a/win32/common/libgstreamer.def +++ b/win32/common/libgstreamer.def @@ -299,6 +299,7 @@ EXPORTS gst_element_add_pad gst_element_change_state gst_element_class_add_pad_template + gst_element_class_add_static_pad_template gst_element_class_get_pad_template gst_element_class_get_pad_template_list gst_element_class_install_std_props