From 542ad4fdc579e689e3e0486e45f4ba7b0c6ee433 Mon Sep 17 00:00:00 2001 From: Philippe Normand Date: Fri, 8 Jun 2018 18:03:22 +0100 Subject: [PATCH] gtkmain: Add gtk_is_initialized() This utility function can be useful to check whether GTK+ was already initialized or not. --- gtk/gtkmain.c | 14 ++++++++++++++ gtk/gtkmain.h | 3 +++ testsuite/gtk/main.c | 24 ++++++++++++++++++++++++ testsuite/gtk/meson.build | 1 + 4 files changed, 42 insertions(+) create mode 100644 testsuite/gtk/main.c diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c index 85bcc3865c..f0bbb899e8 100644 --- a/gtk/gtkmain.c +++ b/gtk/gtkmain.c @@ -884,6 +884,20 @@ gtk_init_check_abi_check (int num_checks, size_t sizeof_GtkWindow, size_t sizeof #endif +/** + * gtk_is_initialized: + * + * Use this function to check if GTK+ has been initialized with gtk_init() + * or gtk_init_check(). + * + * Returns: the initialization status + */ +gboolean +gtk_is_initialized (void) +{ + return gtk_initialized; +} + /** * gtk_get_locale_direction: * diff --git a/gtk/gtkmain.h b/gtk/gtkmain.h index deacf59b32..438e5985e0 100644 --- a/gtk/gtkmain.h +++ b/gtk/gtkmain.h @@ -78,6 +78,9 @@ void gtk_init (void); GDK_AVAILABLE_IN_ALL gboolean gtk_init_check (void); +GDK_AVAILABLE_IN_ALL +gboolean gtk_is_initialized (void); + #ifdef G_OS_WIN32 /* Variants that are used to check for correct struct packing diff --git a/testsuite/gtk/main.c b/testsuite/gtk/main.c new file mode 100644 index 0000000000..dc5e249069 --- /dev/null +++ b/testsuite/gtk/main.c @@ -0,0 +1,24 @@ +#include +#include + +static void +test_init (void) +{ + g_assert (gtk_is_initialized () == FALSE); + g_assert (gtk_init_check ()); + g_assert (gtk_is_initialized () == TRUE); +} + +int +main (int argc, char *argv[]) +{ + /* Don't use gtk_test_init here because it implicitely initializes GTK+. */ + g_test_init (&argc, &argv, NULL); + gtk_disable_setlocale(); + setlocale (LC_ALL, "C"); + g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=%s"); + + g_test_add_func ("/main/init", test_init); + + return g_test_run (); +} diff --git a/testsuite/gtk/meson.build b/testsuite/gtk/meson.build index 116a945ebd..d2febc485c 100644 --- a/testsuite/gtk/meson.build +++ b/testsuite/gtk/meson.build @@ -27,6 +27,7 @@ tests = [ ['icontheme'], ['keyhash', ['../../gtk/gtkkeyhash.c', gtkresources, '../../gtk/gtkprivate.c'], gtk_cargs], ['listbox'], + ['main'], ['notify'], ['no-gtk-init'], ['object'],