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 \