From a7d4464ac167672470fc31b0b2a16c445dd704d6 Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Wed, 24 Aug 2005 13:04:31 +0000 Subject: [PATCH] Fixed long standing mem-leak Original commit message from CVS: * gst/gstelement.c: (gst_element_class_init), (gst_element_set_state), (activate_pads), (gst_element_save_thyself): * tools/gst-compprep.c: (main): * tools/gst-inspect.c: (print_element_properties_info): * tools/gst-xmlinspect.c: (print_element_properties): Fixed long standing mem-leak --- ChangeLog | 10 ++++++++++ gst/gstelement.c | 31 +++++++++++++++---------------- tools/gst-compprep.c | 1 + tools/gst-inspect.c | 2 ++ tools/gst-xmlinspect.c | 1 + 5 files changed, 29 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 60d0c86..5cc89b2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2005-08-24 Stefan Kost + + * gst/gstelement.c: (gst_element_class_init), + (gst_element_set_state), (activate_pads), + (gst_element_save_thyself): + * tools/gst-compprep.c: (main): + * tools/gst-inspect.c: (print_element_properties_info): + * tools/gst-xmlinspect.c: (print_element_properties): + Fixed long standing mem-leak + 2005-08-24 Jan Schmidt * check/gst/gstbin.c: (GST_START_TEST): diff --git a/gst/gstelement.c b/gst/gstelement.c index 31e7fa7..a632f86 100644 --- a/gst/gstelement.c +++ b/gst/gstelement.c @@ -116,8 +116,8 @@ gst_element_class_init (GstElementClass * klass) /** * GstElement::state-changed: * @gstelement: the object which received the signal - * @old_state: the GST_STATE_XXX before the change - * @new_state: the GST_STATE_XXX after the change + * @int: + * @int: * * the #GstElementState of the element has been changed */ @@ -128,7 +128,7 @@ gst_element_class_init (GstElementClass * klass) /** * GstElement::pad-added: * @gstelement: the object which received the signal - * @new_pad: the pad that has been added + * @object: * * a new #GstPad has been added to the element */ @@ -139,7 +139,7 @@ gst_element_class_init (GstElementClass * klass) /** * GstElement::pad-removed: * @gstelement: the object which received the signal - * @old_pad: the pad that has been removed + * @object: * * a #GstPad has been removed from the element */ @@ -151,7 +151,7 @@ gst_element_class_init (GstElementClass * klass) * GstElement::no-more-pads: * @gstelement: the object which received the signal * - * This signals that the element will not generate more dynamic pads. + * ? */ gst_element_signals[NO_MORE_PADS] = g_signal_new ("no-more-pads", G_TYPE_FROM_CLASS (klass), @@ -1140,13 +1140,10 @@ gst_element_send_event (GstElement * element, GstEvent * event) /** * gst_element_seek: * @element: a #GstElement to send the event to. - * @rate: the rate of the seek - * @format: the #GstFormat to use for seeking (GST_FORMAT_*). - * @flags: the flags to use for seeking (GST_SEEK_FLAG_*). - * @cur_type: the #GstSeekType for the start offset - * @cur: the start offset to seek to (in the given seek_format). - * @stop_type: the #GstSeekType for the end offset - * @stop: the end offset to seek to (in the given seek_format). + * @seek_method: the method to use for seeking (GST_SEEK_METHOD_*). + * @seek_format: the #GstFormat to use for seeking (GST_FORMAT_*). + * @seek_flags: the flags to use for seeking (GST_SEEK_FLAG_*). + * @offset: the offset to seek to (in the given seek_format). * * Sends a seek event to an element. * @@ -1768,7 +1765,6 @@ gst_element_set_state (GstElement * element, GstElementState state) GstElementState pending; GTimeVal tv; - g_return_val_if_fail (GST_IS_ELEMENT (element), GST_STATE_FAILURE); /* get current element state, need to call the method so that * we call the virtual method and subclasses can implement their @@ -1782,7 +1778,6 @@ gst_element_set_state (GstElement * element, GstElementState state) GST_STATE_FINAL (element) = state; if (ret == GST_STATE_ASYNC) { gst_element_commit_state (element); - gst_element_lost_state (element); } /* start with the current state */ @@ -1892,8 +1887,6 @@ activate_pads (GstPad * pad, GValue * ret, gboolean * active) { if (!gst_pad_set_active (pad, *active)) g_value_set_boolean (ret, FALSE); - else if (!*active) - gst_pad_set_caps (pad, NULL); gst_object_unref (pad); return TRUE; @@ -2127,6 +2120,10 @@ gst_element_save_thyself (GstObject * object, xmlNodePtr parent) (xmlChar *) GST_PLUGIN_FEATURE (factory)->name); } +/* FIXME: what is this? */ +/* if (element->manager) */ +/* xmlNewChild(parent, NULL, "manager", GST_ELEMENT_NAME(element->manager)); */ + /* params */ specs = g_object_class_list_properties (G_OBJECT_GET_CLASS (object), &nspecs); @@ -2159,6 +2156,8 @@ gst_element_save_thyself (GstObject * object, xmlNodePtr parent) } } + g_free (specs); + pads = GST_ELEMENT_PADS (element); while (pads) { diff --git a/tools/gst-compprep.c b/tools/gst-compprep.c index f96727c..93f8b93 100644 --- a/tools/gst-compprep.c +++ b/tools/gst-compprep.c @@ -133,6 +133,7 @@ main (int argc, char *argv[]) } } } + g_free (property_specs); } } diff --git a/tools/gst-inspect.c b/tools/gst-inspect.c index 83f9a6a..c441d48 100644 --- a/tools/gst-inspect.c +++ b/tools/gst-inspect.c @@ -489,6 +489,8 @@ print_element_properties_info (GstElement * element) } if (num_properties == 0) n_print (" none\n"); + + g_free (property_specs); } static void diff --git a/tools/gst-xmlinspect.c b/tools/gst-xmlinspect.c index 16b9c1d..ab68a6a 100644 --- a/tools/gst-xmlinspect.c +++ b/tools/gst-xmlinspect.c @@ -353,6 +353,7 @@ print_element_properties (GstElement * element, gint pfx) PUT_END_TAG (pfx + 1, "element-property"); } PUT_END_TAG (pfx, "element-properties"); + g_free (property_specs); } static void -- 2.7.4