gst_deinit: move down tracers cleaning
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Mon, 9 May 2016 14:56:56 +0000 (16:56 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 2 Jun 2016 22:08:04 +0000 (23:08 +0100)
We want the tracer detecting leaks to be finalized as late as possible
to give the chance to other gst components to be properly cleaned first.

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

gst/gst.c

index d508390..33a5a62 100644 (file)
--- a/gst/gst.c
+++ b/gst/gst.c
@@ -996,10 +996,6 @@ gst_deinit (void)
     GST_DEBUG ("already deinitialized");
     return;
   }
-#ifndef GST_DISABLE_GST_DEBUG
-  _priv_gst_tracing_deinit ();
-#endif
-
   g_thread_pool_set_max_unused_threads (0);
   bin_class = GST_BIN_CLASS (g_type_class_peek (gst_bin_get_type ()));
   if (bin_class->pool != NULL) {
@@ -1024,6 +1020,14 @@ gst_deinit (void)
 
   _priv_gst_registry_cleanup ();
   _priv_gst_allocator_cleanup ();
+
+  /* We want to destroy tracers as late as possible for the leaks tracer
+   * but still need to keep the caps system alive as it may have to use
+   * gst_caps_to_string() to display leaked caps. */
+#ifndef GST_DISABLE_GST_DEBUG
+  _priv_gst_tracing_deinit ();
+#endif
+
   _priv_gst_caps_features_cleanup ();
   _priv_gst_caps_cleanup ();