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:
@ -120,7 +120,6 @@
|
|||||||
#include "gtkmodulesprivate.h"
|
#include "gtkmodulesprivate.h"
|
||||||
#include "gtkprivate.h"
|
#include "gtkprivate.h"
|
||||||
#include "gtkrecentmanager.h"
|
#include "gtkrecentmanager.h"
|
||||||
#include "gtkresources.h"
|
|
||||||
#include "gtkselectionprivate.h"
|
#include "gtkselectionprivate.h"
|
||||||
#include "gtksettingsprivate.h"
|
#include "gtksettingsprivate.h"
|
||||||
#include "gtktooltip.h"
|
#include "gtktooltip.h"
|
||||||
@ -707,7 +706,7 @@ do_post_parse_initialization (int *argc,
|
|||||||
g_warning ("Whoever translated default:LTR did so wrongly.\n");
|
g_warning ("Whoever translated default:LTR did so wrongly.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
_gtk_register_resource ();
|
_gtk_ensure_resources ();
|
||||||
|
|
||||||
_gtk_accel_map_init ();
|
_gtk_accel_map_init ();
|
||||||
|
|
||||||
|
|||||||
@ -30,6 +30,7 @@
|
|||||||
#include "gdk/gdk.h"
|
#include "gdk/gdk.h"
|
||||||
|
|
||||||
#include "gtkprivate.h"
|
#include "gtkprivate.h"
|
||||||
|
#include "gtkresources.h"
|
||||||
|
|
||||||
|
|
||||||
#if !defined G_OS_WIN32 && !(defined GDK_WINDOWING_QUARTZ && defined QUARTZ_RELOCATION)
|
#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;
|
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);
|
||||||
|
}
|
||||||
|
|||||||
@ -59,6 +59,8 @@ gboolean _gtk_fnmatch (const char *pattern,
|
|||||||
|
|
||||||
gchar * _gtk_get_lc_ctype (void);
|
gchar * _gtk_get_lc_ctype (void);
|
||||||
|
|
||||||
|
void _gtk_ensure_resources (void);
|
||||||
|
|
||||||
gboolean _gtk_boolean_handled_accumulator (GSignalInvocationHint *ihint,
|
gboolean _gtk_boolean_handled_accumulator (GSignalInvocationHint *ihint,
|
||||||
GValue *return_accu,
|
GValue *return_accu,
|
||||||
const GValue *handler_return,
|
const GValue *handler_return,
|
||||||
|
|||||||
@ -148,6 +148,7 @@ regression_tests_LDADD = $(progs_ldadd)
|
|||||||
TEST_PROGS += keyhash
|
TEST_PROGS += keyhash
|
||||||
keyhash_SOURCES = keyhash.c \
|
keyhash_SOURCES = keyhash.c \
|
||||||
../gtkkeyhash.c ../gtkkeyhash.h \
|
../gtkkeyhash.c ../gtkkeyhash.h \
|
||||||
|
../gtkresources.c ../gtkresources.h \
|
||||||
../gtkprivate.c ../gtkprivate.h
|
../gtkprivate.c ../gtkprivate.h
|
||||||
keyhash_LDADD = $(progs_ldadd)
|
keyhash_LDADD = $(progs_ldadd)
|
||||||
keyhash_CFLAGS = -DGTK_COMPILATION \
|
keyhash_CFLAGS = -DGTK_COMPILATION \
|
||||||
|
|||||||
Reference in New Issue
Block a user