mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-02 16:52:42 +00:00
tracerrecord: Be stricter while parsing record templates
It's not really possible for us to recover when someone uses the gst_tracer_record_new() API incorrectly. Also, document a piece of somewhat-obscure code.
This commit is contained in:
parent
bafa7a5ca7
commit
aae5f58dd1
1 changed files with 8 additions and 3 deletions
|
@ -70,7 +70,7 @@ build_field_template (GQuark field_id, const GValue * value, gpointer user_data)
|
||||||
gboolean res;
|
gboolean res;
|
||||||
|
|
||||||
if (G_VALUE_TYPE (value) != GST_TYPE_STRUCTURE) {
|
if (G_VALUE_TYPE (value) != GST_TYPE_STRUCTURE) {
|
||||||
GST_WARNING ("expected field of type GstStructure, but %s is %s",
|
GST_ERROR ("expected field of type GstStructure, but %s is %s",
|
||||||
g_quark_to_string (field_id), G_VALUE_TYPE_NAME (value));
|
g_quark_to_string (field_id), G_VALUE_TYPE_NAME (value));
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -201,8 +201,11 @@ gst_tracer_record_new (const gchar * name, const gchar * firstfield, ...)
|
||||||
|
|
||||||
/* all fields passed here must be GstStructures which we take over */
|
/* all fields passed here must be GstStructures which we take over */
|
||||||
if (type != GST_TYPE_STRUCTURE) {
|
if (type != GST_TYPE_STRUCTURE) {
|
||||||
GST_WARNING ("expected field of type GstStructure, but %s is %s",
|
GST_ERROR ("expected field of type GstStructure, but %s is %s",
|
||||||
firstfield, g_type_name (type));
|
firstfield, g_type_name (type));
|
||||||
|
va_end (varargs);
|
||||||
|
gst_structure_free (structure);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
G_VALUE_COLLECT_INIT (&val, type, varargs, G_VALUE_NOCOPY_CONTENTS, &err);
|
G_VALUE_COLLECT_INIT (&val, type, varargs, G_VALUE_NOCOPY_CONTENTS, &err);
|
||||||
|
@ -211,7 +214,9 @@ gst_tracer_record_new (const gchar * name, const gchar * firstfield, ...)
|
||||||
g_free (err);
|
g_free (err);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* see boxed_proxy_collect_value */
|
/* give ownership of the GstStructure "value" collected from varargs
|
||||||
|
* to this structure by unsetting the NOCOPY_CONTENTS collect-flag.
|
||||||
|
* see boxed_proxy_collect_value in glib's gobject/gboxed.c */
|
||||||
val.data[1].v_uint &= ~G_VALUE_NOCOPY_CONTENTS;
|
val.data[1].v_uint &= ~G_VALUE_NOCOPY_CONTENTS;
|
||||||
gst_structure_id_take_value (structure, id, &val);
|
gst_structure_id_take_value (structure, id, &val);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue