mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 04:22:27 +00:00
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
This commit is contained in:
parent
253ebab319
commit
bbe26d36ba
4 changed files with 21 additions and 3 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue