value: fix parsing of explicit value casts

Since acdb4ce03d , parsing of the
value for a property can use the pspec to determine what type
a value should be casted to.

However, this broke the case where the value is explicitly casted
to a type (eg <(float) 0.0>). In that situation, we want to respect
the casting decision, and only use the pspec to perform "implicit"
casts.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/881

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/772>
This commit is contained in:
Mathieu Duponchelle 2021-03-17 14:06:51 +01:00
parent 44bdad58f6
commit 12661d90a3

View file

@ -2754,9 +2754,7 @@ _priv_gst_value_parse_value (gchar * str,
/* check if there's a (type_name) 'cast' */
type_name = NULL;
if (pspec) {
type = G_PARAM_SPEC_VALUE_TYPE (pspec);
} else if (*s == '(') {
if (*s == '(') {
s++;
while (g_ascii_isspace (*s))
s++;
@ -2782,6 +2780,8 @@ _priv_gst_value_parse_value (gchar * str,
GST_WARNING ("invalid type");
return FALSE;
}
} else if (pspec) {
type = G_PARAM_SPEC_VALUE_TYPE (pspec);
}
while (g_ascii_isspace (*s))