gst: Use G_VALUE_COLLECT_INIT if available
authorEdward Hervey <bilboed@bilboed.com>
Wed, 17 Feb 2010 12:02:43 +0000 (13:02 +0100)
committerEdward Hervey <bilboed@bilboed.com>
Fri, 12 Mar 2010 09:01:47 +0000 (10:01 +0100)
This brings total call speedups between 5% and 25%.
gst_caps_set_simple_valist: +5%
gst_structure_set_valist: + 10%
gst_structure_id_set_valist: +25%
gst_tag_list_add_valist: +5%

Measured using valgrind when run over the discovery of 200 media files.

Fixes #610256

gst/gstcaps.c
gst/gstchildproxy.c
gst/gststructure.c
gst/gsttaglist.c

index 55133e4..c0ebf4a 100644 (file)
@@ -940,9 +940,12 @@ gst_caps_set_simple_valist (GstCaps * caps, const char *field, va_list varargs)
       g_warning ("Don't use G_TYPE_DATE, use GST_TYPE_DATE instead\n");
       type = GST_TYPE_DATE;
     }
-
+#ifndef G_VALUE_COLLECT_INIT
     g_value_init (&value, type);
     G_VALUE_COLLECT (&value, varargs, 0, &err);
+#else
+    G_VALUE_COLLECT_INIT (&value, type, varargs, 0, &err);
+#endif
     if (G_UNLIKELY (err)) {
       g_critical ("%s", err);
       return;
index f8995ff..faa0f07 100644 (file)
@@ -388,8 +388,13 @@ gst_child_proxy_set_valist (GstObject * object,
     if (!gst_child_proxy_lookup (object, name, &target, &pspec))
       goto not_found;
 
+#ifndef G_VALUE_COLLECT_INIT
     g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
     G_VALUE_COLLECT (&value, var_args, G_VALUE_NOCOPY_CONTENTS, &error);
+#else
+    G_VALUE_COLLECT_INIT (&value, pspec->value_type, var_args,
+        G_VALUE_NOCOPY_CONTENTS, &error);
+#endif
     if (error)
       goto cant_copy;
 
index ba0a073..a82accb 100644 (file)
@@ -517,9 +517,12 @@ gst_structure_set_valist (GstStructure * structure,
       g_warning ("Don't use G_TYPE_DATE, use GST_TYPE_DATE instead\n");
       type = GST_TYPE_DATE;
     }
-
+#ifndef G_VALUE_COLLECT_INIT
     g_value_init (&field.value, type);
     G_VALUE_COLLECT (&field.value, varargs, 0, &err);
+#else
+    G_VALUE_COLLECT_INIT (&field.value, type, varargs, 0, &err);
+#endif
     if (G_UNLIKELY (err)) {
       g_critical ("%s", err);
       return;
@@ -587,9 +590,12 @@ gst_structure_id_set_valist (GstStructure * structure,
       g_warning ("Don't use G_TYPE_DATE, use GST_TYPE_DATE instead\n");
       type = GST_TYPE_DATE;
     }
-
+#ifndef G_VALUE_COLLECT_INIT
     g_value_init (&field.value, type);
     G_VALUE_COLLECT (&field.value, varargs, 0, &err);
+#else
+    G_VALUE_COLLECT_INIT (&field.value, type, varargs, 0, &err);
+#endif
     if (G_UNLIKELY (err)) {
       g_critical ("%s", err);
       return;
index 9cc0abf..8afbc6f 100644 (file)
@@ -957,8 +957,12 @@ gst_tag_list_add_valist (GstTagList * list, GstTagMergeMode mode,
       g_warning ("unknown tag '%s'", tag);
       return;
     }
+#ifndef G_VALUE_COLLECT_INIT
     g_value_init (&value, info->type);
     G_VALUE_COLLECT (&value, var_args, 0, &error);
+#else
+    G_VALUE_COLLECT_INIT (&value, info->type, var_args, 0, &error);
+#endif
     if (error) {
       g_warning ("%s: %s", G_STRLOC, error);
       g_free (error);