[gtk: 1/3] gtkmain: Add gtk_is_initialized()



commit 542ad4fdc579e689e3e0486e45f4ba7b0c6ee433
Author: Philippe Normand <philn igalia com>
Date:   Fri Jun 8 18:03:22 2018 +0100

    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(+)
---
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 <gtk/gtk.h>
+#include <locale.h>
+
+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'],


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]