mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 08:46:40 +00:00
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:
parent
134da6c28e
commit
1740781a70
2 changed files with 20 additions and 1 deletions
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue