[gtk: 2/3] gtkmain: Add gtk_get_main_thread()
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk: 2/3] gtkmain: Add gtk_get_main_thread()
- Date: Sun, 10 Jun 2018 23:07:22 +0000 (UTC)
commit 2f181df1cf3d1738c112e06d31ccfb83c11d4f2a
Author: Philippe Normand <philn igalia com>
Date: Fri Jun 8 18:10:59 2018 +0100
gtkmain: Add gtk_get_main_thread()
This utility function can be useful to know which thread was initialized for
GTK+.
gtk/gtkmain.c | 17 +++++++++++++++++
gtk/gtkmain.h | 3 +++
testsuite/gtk/main.c | 6 ++++++
3 files changed, 26 insertions(+)
---
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index f0bbb899e8..fd26bdef73 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -140,6 +140,7 @@ static guint gtk_main_loop_level = 0;
static gint pre_initialized = FALSE;
static gint gtk_initialized = FALSE;
static GList *current_events = NULL;
+static GThread *initialized_thread = NULL;
static GSList *main_loops = NULL; /* stack of currently executing main loops */
@@ -774,6 +775,8 @@ gtk_init_check (void)
do_pre_parse_initialization ();
do_post_parse_initialization ();
+ initialized_thread = g_thread_self ();
+
ret = gdk_display_open_default () != NULL;
if (ret && (gtk_get_debug_flags () & GTK_DEBUG_INTERACTIVE))
@@ -898,6 +901,20 @@ gtk_is_initialized (void)
return gtk_initialized;
}
+/**
+ * gtk_get_main_thread:
+ *
+ * Get the thread from which GTK+ was initialized.
+ *
+ * Returns: (transfer none): The #GThread initialized for GTK+, must not be freed
+ */
+GThread *
+gtk_get_main_thread (void)
+{
+ return initialized_thread;
+}
+
+
/**
* gtk_get_locale_direction:
*
diff --git a/gtk/gtkmain.h b/gtk/gtkmain.h
index 438e5985e0..b80da107d5 100644
--- a/gtk/gtkmain.h
+++ b/gtk/gtkmain.h
@@ -81,6 +81,9 @@ gboolean gtk_init_check (void);
GDK_AVAILABLE_IN_ALL
gboolean gtk_is_initialized (void);
+GDK_AVAILABLE_IN_ALL
+GThread * gtk_get_main_thread (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
index dc5e249069..727ae032bb 100644
--- a/testsuite/gtk/main.c
+++ b/testsuite/gtk/main.c
@@ -4,9 +4,15 @@
static void
test_init (void)
{
+ GThread *self = g_thread_self ();
+
g_assert (gtk_is_initialized () == FALSE);
+ g_assert (gtk_get_main_thread () == NULL);
+
g_assert (gtk_init_check ());
g_assert (gtk_is_initialized () == TRUE);
+
+ g_assert (gtk_get_main_thread () == self);
}
int
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]