value: Accept NULL as a structure

Some GstStructure properties default to NULL, so it should
be a supported value.

With unit test.
This commit is contained in:
Olivier Crête 2017-04-10 12:24:06 -04:00
parent 9a04087347
commit dd1f0f49ab
2 changed files with 23 additions and 0 deletions

View file

@ -2754,6 +2754,12 @@ gst_value_compare_structure (const GValue * value1, const GValue * value2)
GstStructure *structure1 = GST_STRUCTURE (g_value_get_boxed (value1));
GstStructure *structure2 = GST_STRUCTURE (g_value_get_boxed (value2));
if (structure1 == structure2)
return GST_VALUE_EQUAL;
if (!structure1 || !structure2)
return GST_VALUE_UNORDERED;
if (gst_structure_is_equal (structure1, structure2))
return GST_VALUE_EQUAL;

View file

@ -1048,6 +1048,23 @@ GST_START_TEST (test_value_compare)
fail_unless (gst_value_compare (&value1, &value1) == GST_VALUE_EQUAL);
g_value_unset (&value1);
g_value_unset (&value2);
/* Check that we can compare structure */
{
GstStructure *s = gst_structure_new_empty ("test");
g_value_init (&value1, GST_TYPE_STRUCTURE);
g_value_init (&value2, GST_TYPE_STRUCTURE);
fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_EQUAL);
gst_value_set_structure (&value1, s);
fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_UNORDERED);
gst_value_set_structure (&value2, s);
fail_unless (gst_value_compare (&value1, &value2) == GST_VALUE_EQUAL);
g_value_unset (&value1);
g_value_unset (&value2);
gst_structure_free (s);
}
}
GST_END_TEST;