capsfeature: add cleanup priv function
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Tue, 26 Apr 2016 13:02:14 +0000 (16:02 +0300)
committerTim-Philipp Müller <tim@centricular.com>
Tue, 26 Apr 2016 13:29:01 +0000 (14:29 +0100)
Those are allocated in _priv_gst_caps_features_initialize() so it makes
sense to have a symetric cleanup functions called by gst_deinit().

https://bugzilla.gnome.org/show_bug.cgi?id=765606

gst/gst.c
gst/gst_private.h
gst/gstcapsfeatures.c

index 6973ad4..ca99a47 100644 (file)
--- a/gst/gst.c
+++ b/gst/gst.c
@@ -991,6 +991,7 @@ gst_deinit (void)
 
   _priv_gst_registry_cleanup ();
   _priv_gst_allocator_cleanup ();
+  _priv_gst_caps_features_cleanup ();
 
 #ifndef GST_DISABLE_TRACE
   _priv_gst_alloc_trace_deinit ();
index 1060934..efe55a1 100644 (file)
@@ -129,6 +129,7 @@ G_GNUC_INTERNAL  void  _priv_gst_date_time_initialize (void);
 
 /* cleanup functions called from gst_deinit(). */
 G_GNUC_INTERNAL  void  _priv_gst_allocator_cleanup (void);
+G_GNUC_INTERNAL  void  _priv_gst_caps_features_cleanup (void);
 
 /* Private registry functions */
 G_GNUC_INTERNAL
index ea06f0c..95e4bae 100644 (file)
@@ -105,6 +105,18 @@ _priv_gst_caps_features_initialize (void)
       &static_caps_features_parent_refcount);
 }
 
+void
+_priv_gst_caps_features_cleanup (void)
+{
+  gst_caps_features_set_parent_refcount (_gst_caps_features_any, NULL);
+  gst_caps_features_free (_gst_caps_features_any);
+  _gst_caps_features_any = NULL;
+  gst_caps_features_set_parent_refcount
+      (_gst_caps_features_memory_system_memory, NULL);
+  gst_caps_features_free (_gst_caps_features_memory_system_memory);
+  _gst_caps_features_memory_system_memory = NULL;
+}
+
 gboolean
 gst_is_caps_features (gconstpointer obj)
 {