From 7e69305657f547789bdca53211134bce9bb24a98 Mon Sep 17 00:00:00 2001 From: Niels De Graef Date: Sat, 3 Nov 2018 20:00:57 +0100 Subject: [PATCH] miniobject: add gst_clear_mini_object() This is based on g_clear_object(). Basically, you can use this instead of using gst_mini_object_unref (which needs to be preceded by a NULL-check). Also fixes #275 --- gst/gstminiobject.c | 24 ++++++++++++++++++++++++ gst/gstminiobject.h | 4 ++++ 2 files changed, 28 insertions(+) diff --git a/gst/gstminiobject.c b/gst/gstminiobject.c index 251d5262ce..324346c321 100644 --- a/gst/gstminiobject.c +++ b/gst/gstminiobject.c @@ -668,6 +668,30 @@ gst_mini_object_unref (GstMiniObject * mini_object) } } +/** + * gst_clear_mini_object: (skip) + * @object_ptr: a pointer to a #GstMiniObject reference + * + * Clears a reference to a #GstMiniObject. + * + * @object_ptr must not be %NULL. + * + * If the reference is %NULL then this function does nothing. + * Otherwise, the reference count of the object is decreased using + * gst_mini_object_unref() 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_mini_object +void +gst_clear_mini_object (volatile GstMiniObject ** object_ptr) +{ + g_clear_pointer (object_ptr, gst_mini_object_unref); +} + /** * gst_mini_object_replace: * @olddata: (inout) (transfer full) (nullable): pointer to a pointer to a diff --git a/gst/gstminiobject.h b/gst/gstminiobject.h index 736e7b4472..b9d331424c 100644 --- a/gst/gstminiobject.h +++ b/gst/gstminiobject.h @@ -234,6 +234,10 @@ GstMiniObject * gst_mini_object_ref (GstMiniObject *mini_object); GST_API void gst_mini_object_unref (GstMiniObject *mini_object); +GST_API +void gst_clear_mini_object (volatile GstMiniObject **object_ptr); +#define gst_clear_mini_object(object_ptr) g_clear_pointer ((object_ptr), gst_mini_object_unref) + GST_API void gst_mini_object_weak_ref (GstMiniObject *object, GstMiniObjectNotify notify,