diff options
author | Tristan Van Berkom <tristanvb@openismus.com> | 2013-03-24 17:16:20 +0900 |
---|---|---|
committer | Tristan Van Berkom <tristanvb@openismus.com> | 2013-04-08 21:19:27 +0900 |
commit | 4ec6d6006e36f3f51074750534a8ab20b51abb5b (patch) | |
tree | a8d778d3a7ec2024000b4b251a81ccb8a355a4fb /gtk | |
parent | c6ab5157358bc364eede018acc14de976add195c (diff) | |
download | gtk+-4ec6d6006e36f3f51074750534a8ab20b51abb5b.tar.gz |
Work around access to global resources without calling gtk_init()
Some utilities such as GIR and gtk-doc, initialize class vtables without
initializing GTK+, with composite templates accessing resources this
causes a hand full of unneeded warnings.
The workaround for now is the use a private function _gtk_ensure_resources()
which is both called while initializing GTK+, and at the beginning of
gtk_widget_class_set_template_from_resource() (the private function
ensures that the resource will only ever be registered GOnce).
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkmain.c | 3 | ||||
-rw-r--r-- | gtk/gtkprivate.c | 16 | ||||
-rw-r--r-- | gtk/gtkprivate.h | 2 | ||||
-rw-r--r-- | gtk/tests/Makefile.am | 1 |
4 files changed, 20 insertions, 2 deletions
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c index 18f2171898..36a5604584 100644 --- a/gtk/gtkmain.c +++ b/gtk/gtkmain.c @@ -120,7 +120,6 @@ #include "gtkmodulesprivate.h" #include "gtkprivate.h" #include "gtkrecentmanager.h" -#include "gtkresources.h" #include "gtkselectionprivate.h" #include "gtksettingsprivate.h" #include "gtktooltip.h" @@ -707,7 +706,7 @@ do_post_parse_initialization (int *argc, g_warning ("Whoever translated default:LTR did so wrongly.\n"); } - _gtk_register_resource (); + _gtk_ensure_resources (); _gtk_accel_map_init (); diff --git a/gtk/gtkprivate.c b/gtk/gtkprivate.c index 70151f9bfe..3177d4761d 100644 --- a/gtk/gtkprivate.c +++ b/gtk/gtkprivate.c @@ -30,6 +30,7 @@ #include "gdk/gdk.h" #include "gtkprivate.h" +#include "gtkresources.h" #if !defined G_OS_WIN32 && !(defined GDK_WINDOWING_QUARTZ && defined QUARTZ_RELOCATION) @@ -251,3 +252,18 @@ _gtk_translate_keyboard_accel_state (GdkKeymap *keymap, return retval; } + +static gpointer +register_resources (gpointer data) +{ + _gtk_register_resource (); + return NULL; +} + +void +_gtk_ensure_resources (void) +{ + static GOnce register_resources_once = G_ONCE_INIT; + + g_once (®ister_resources_once, register_resources, NULL); +} diff --git a/gtk/gtkprivate.h b/gtk/gtkprivate.h index 5b05f5bb47..093334f84c 100644 --- a/gtk/gtkprivate.h +++ b/gtk/gtkprivate.h @@ -59,6 +59,8 @@ gboolean _gtk_fnmatch (const char *pattern, gchar * _gtk_get_lc_ctype (void); +void _gtk_ensure_resources (void); + gboolean _gtk_boolean_handled_accumulator (GSignalInvocationHint *ihint, GValue *return_accu, const GValue *handler_return, diff --git a/gtk/tests/Makefile.am b/gtk/tests/Makefile.am index ba24328fa5..0f2dd781e8 100644 --- a/gtk/tests/Makefile.am +++ b/gtk/tests/Makefile.am @@ -148,6 +148,7 @@ regression_tests_LDADD = $(progs_ldadd) TEST_PROGS += keyhash keyhash_SOURCES = keyhash.c \ ../gtkkeyhash.c ../gtkkeyhash.h \ + ../gtkresources.c ../gtkresources.h \ ../gtkprivate.c ../gtkprivate.h keyhash_LDADD = $(progs_ldadd) keyhash_CFLAGS = -DGTK_COMPILATION \ |