structure: add gst_clear_structure()

Basically, you can use this instead of using gst_structure_free (which
needs to be preceded by a NULL-check).

Also fixes #275
This commit is contained in:
Niels De Graef 2018-11-04 19:04:19 +01:00 committed by Sebastian Dröge
parent fdeddb4b93
commit e35dc31fda
2 changed files with 28 additions and 0 deletions

View file

@ -394,6 +394,30 @@ gst_structure_free (GstStructure * structure)
g_slice_free1 (sizeof (GstStructureImpl), structure); g_slice_free1 (sizeof (GstStructureImpl), structure);
} }
/**
* gst_clear_structure: (skip)
* @structure_ptr: a pointer to a #GstStructure reference
*
* Clears a reference to a #GstStructure.
*
* @structure_ptr must not be %NULL.
*
* If the reference is %NULL then this function does nothing.
* Otherwise, the structure is free'd using gst_structure_free() and the
* pointer is set to %NULL.
*
* A macro is also included that allows this function to be used without
* pointer casts.
*
* Since: 1.16
**/
#undef gst_clear_structure
void
gst_clear_structure (volatile GstStructure ** structure_ptr)
{
g_clear_pointer (structure_ptr, gst_structure_free);
}
/** /**
* gst_structure_get_name: * gst_structure_get_name:
* @structure: a #GstStructure * @structure: a #GstStructure

View file

@ -133,6 +133,10 @@ gboolean gst_structure_set_parent_refcount (GstStructure *
GST_API GST_API
void gst_structure_free (GstStructure * structure); void gst_structure_free (GstStructure * structure);
GST_API
void gst_clear_structure (volatile GstStructure **structure_ptr);
#define gst_clear_structure(structure_ptr) g_clear_pointer ((structure_ptr), gst_structure_free)
GST_API GST_API
const gchar * gst_structure_get_name (const GstStructure * structure); const gchar * gst_structure_get_name (const GstStructure * structure);