diff --git a/gst/gst.c b/gst/gst.c index fc4f253ded..b383f416e3 100644 --- a/gst/gst.c +++ b/gst/gst.c @@ -1077,6 +1077,9 @@ gst_deinit (void) GstBinClass *bin_class; GstClock *clock; + if (!gst_initialized) + return; + GST_INFO ("deinitializing GStreamer"); if (gst_deinitialized) { @@ -1084,7 +1087,7 @@ gst_deinit (void) return; } g_thread_pool_set_max_unused_threads (0); - bin_class = GST_BIN_CLASS (g_type_class_peek (gst_bin_get_type ())); + bin_class = (GstBinClass *) g_type_class_peek (gst_bin_get_type ()); if (bin_class && bin_class->pool != NULL) { g_thread_pool_free (bin_class->pool, FALSE, TRUE); bin_class->pool = NULL; diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am index ece25216de..9d78cc727e 100644 --- a/tests/check/Makefile.am +++ b/tests/check/Makefile.am @@ -121,6 +121,7 @@ check_PROGRAMS = \ gst/gstcapsfeatures \ $(CXX_CHECKS) \ gst/gstdatetime \ + gst/gstdeinit \ gst/gstdevice \ gst/gstinfo \ gst/gstiterator \ diff --git a/tests/check/gst/.gitignore b/tests/check/gst/.gitignore index f3a5f855c1..4c8605823e 100644 --- a/tests/check/gst/.gitignore +++ b/tests/check/gst/.gitignore @@ -14,8 +14,10 @@ gstclock gstcontroller gstcontext gstcpp +gstcustombufferpool gstdata gstdatetime +gstdeinit gstdevice gstelement gstelementfactory diff --git a/tests/check/gst/gstdeinit.c b/tests/check/gst/gstdeinit.c new file mode 100644 index 0000000000..b551e85d9a --- /dev/null +++ b/tests/check/gst/gstdeinit.c @@ -0,0 +1,37 @@ +/* GStreamer + * Copyright (C) 2017 Tim-Philipp Müller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +int +main (int argc, char **argv) +{ + char *arr[] = { (char *) "gstdeinit", (char *) "--gst-debug" }; + char **a = arr; + int n = 2; + + /* This will fail because --gst-debug requires a parameter */ + gst_init_check (&n, &a, NULL); + + gst_deinit (); + return 0; +} diff --git a/tests/check/meson.build b/tests/check/meson.build index aadc5e9993..f2d98616c2 100644 --- a/tests/check/meson.build +++ b/tests/check/meson.build @@ -17,6 +17,7 @@ core_tests = [ [ 'gst/gstcaps.c' ], [ 'gst/gstcapsfeatures.c' ], [ 'gst/gstdatetime.c' ], + [ 'gst/gstdeinit.c' ], [ 'gst/gstdevice.c' ], [ 'gst/gstelement.c', not have_registry ], [ 'gst/gstelementfactory.c', not have_registry ],