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).
This commit is contained in:
Tristan Van Berkom
2013-03-24 17:16:20 +09:00
parent c6ab515735
commit 4ec6d6006e
4 changed files with 20 additions and 2 deletions

View File

@ -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 (&register_resources_once, register_resources, NULL);
}