gstelementfactory: set object name earlier if applicable
authorStefan Kost <ensonic@users.sf.net>
Mon, 14 Dec 2009 09:05:41 +0000 (11:05 +0200)
committerStefan Kost <ensonic@users.sf.net>
Mon, 14 Dec 2009 09:08:48 +0000 (11:08 +0200)
Setting an object name is nice for proper debug logging. Ideally this would
still happens earlier (.e.g when pads are added to an element, its not yet set).

gst/gstelementfactory.c

index 0cdb5ffd21f40693eae00f22c7df55d84fd89e7a..3a87790e50ca201ca7ddca71681d674694736086 100644 (file)
@@ -405,8 +405,14 @@ gst_element_factory_create (GstElementFactory * factory, const gchar * name)
   if (factory->type == 0)
     goto no_type;
 
-  /* create an instance of the element, cast so we don't assert on NULL */
-  element = GST_ELEMENT_CAST (g_object_newv (factory->type, 0, NULL));
+  /* create an instance of the element, cast so we don't assert on NULL
+   * also set name as early as we can
+   */
+  if (name)
+    element =
+        GST_ELEMENT_CAST (g_object_new (factory->type, "name", name, NULL));
+  else
+    element = GST_ELEMENT_CAST (g_object_newv (factory->type, 0, NULL));
   if (G_UNLIKELY (element == NULL))
     goto no_element;
 
@@ -420,9 +426,6 @@ gst_element_factory_create (GstElementFactory * factory, const gchar * name)
           (gpointer) & oclass->elementfactory, NULL, factory))
     gst_object_unref (factory);
 
-  if (name)
-    gst_object_set_name (GST_OBJECT_CAST (element), name);
-
   GST_DEBUG ("created element \"%s\"", GST_PLUGIN_FEATURE_NAME (factory));
 
   return element;