From bbe26d36ba42ec414a4d31a8864b23cf00906764 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Wed, 17 Feb 2010 13:02:43 +0100 Subject: [PATCH] gst: Use G_VALUE_COLLECT_INIT if available 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 | 5 ++++- gst/gstchildproxy.c | 5 +++++ gst/gststructure.c | 10 ++++++++-- gst/gsttaglist.c | 4 ++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/gst/gstcaps.c b/gst/gstcaps.c index 55133e4..c0ebf4a 100644 --- a/gst/gstcaps.c +++ b/gst/gstcaps.c @@ -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; diff --git a/gst/gstchildproxy.c b/gst/gstchildproxy.c index f8995ff..faa0f07 100644 --- a/gst/gstchildproxy.c +++ b/gst/gstchildproxy.c @@ -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; diff --git a/gst/gststructure.c b/gst/gststructure.c index ba0a073..a82accb 100644 --- a/gst/gststructure.c +++ b/gst/gststructure.c @@ -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; diff --git a/gst/gsttaglist.c b/gst/gsttaglist.c index 9cc0abf..8afbc6f 100644 --- a/gst/gsttaglist.c +++ b/gst/gsttaglist.c @@ -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); -- 2.7.4