gst/gstelementfactory.c: Release static caps. Fixes #475723.

Original commit message from CVS:
* gst/gstelementfactory.c:
Release static caps. Fixes #475723.
This commit is contained in:
Stefan Kost 2007-09-19 12:31:16 +00:00
parent 134da6c28e
commit 1740781a70
2 changed files with 20 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2007-09-19 Stefan Kost <ensonic@users.sf.net>
* gst/gstelementfactory.c:
Release static caps. Fixes #475723.
2007-09-18 Tim-Philipp Müller <tim at centricular dot net>
* gst/gstinfo.c:

View file

@ -217,10 +217,24 @@ gst_element_factory_cleanup (GstElementFactory * factory)
for (item = factory->staticpadtemplates; item; item = item->next) {
GstStaticPadTemplate *templ = item->data;
GstCaps *caps = (GstCaps *) & (templ->static_caps);
g_free (templ->name_template);
g_free ((gchar *) templ->static_caps.string);
memset (&(templ->static_caps), 0, sizeof (GstStaticCaps));
/* FIXME: this is not threadsafe */
if (caps->refcount == 1) {
GstStructure *structure;
guint i;
for (i = 0; i < caps->structs->len; i++) {
structure = (GstStructure *) gst_caps_get_structure (caps, i);
gst_structure_set_parent_refcount (structure, NULL);
gst_structure_free (structure);
}
g_ptr_array_free (caps->structs, TRUE);
caps->refcount = 0;
}
g_free (templ);
}
g_list_free (factory->staticpadtemplates);