Commit dd1f0f49 authored by Olivier Crête's avatar Olivier Crête 👻

value: Accept NULL as a structure

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

With unit test.
parent 9a040873
......@@ -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;
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment