gst/: make the name property a construct property, so objects always have a proper name.

Original commit message from CVS:
* gst/gstelementfactory.c: (gst_element_factory_create):
* gst/gstobject.c: (gst_object_class_init):
make the name property a construct property, so objects always have
a proper name.
* gst/gstobject.c: (gst_object_set_name_default),
(gst_object_set_name):
fix potential doublefree when resetting a name to its default value
This commit is contained in:
Benjamin Otte 2005-04-26 02:01:52 +00:00
parent f7105a2638
commit 26d06184a3
3 changed files with 15 additions and 6 deletions

View file

@ -1,3 +1,13 @@
2005-04-26 Benjamin Otte <in7y118@public.uni-hamburg.de>
* gst/gstelementfactory.c: (gst_element_factory_create):
* gst/gstobject.c: (gst_object_class_init):
make the name property a construct property, so objects always have
a proper name.
* gst/gstobject.c: (gst_object_set_name_default),
(gst_object_set_name):
fix potential doublefree when resetting a name to its default value
2005-04-25 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
* tests/sched/runxml.c: (main):

View file

@ -324,13 +324,11 @@ gst_element_factory_create (GstElementFactory * factory, const gchar * name)
oclass->elementfactory = factory;
/* create an instance of the element */
element = GST_ELEMENT (g_object_new (factory->type, NULL));
element = GST_ELEMENT (g_object_new (factory->type, "name", name, NULL));
g_assert (element != NULL);
g_type_class_unref (oclass);
gst_object_set_name (GST_OBJECT (element), name);
return element;
}

View file

@ -135,7 +135,7 @@ gst_object_class_init (GstObjectClass * klass)
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_NAME,
g_param_spec_string ("name", "Name", "The name of the object",
NULL, G_PARAM_READWRITE));
NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
gst_object_signals[PARENT_SET] =
g_signal_new ("parent-set", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
@ -463,8 +463,7 @@ gst_object_set_name_default (GstObject * object)
name = g_ascii_strdown (tmp, strlen (tmp));
g_free (tmp);
gst_object_set_name (object, name);
g_free (name);
object->name = name;
}
/**
@ -488,6 +487,8 @@ gst_object_set_name (GstObject * object, const gchar * name)
object->name = g_strdup (name);
else
gst_object_set_name_default (object);
g_object_notify (G_OBJECT (object), "name");
}
/**