From 1c5f6313c58187ce7682058057b63e14ae6f70e5 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 12 Apr 2013 09:50:06 +0200 Subject: Bug #681837 - Make enum type registration thread safe --- enumtypes.c.template | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 enumtypes.c.template (limited to 'enumtypes.c.template') diff --git a/enumtypes.c.template b/enumtypes.c.template new file mode 100644 index 0000000000..0a9912166c --- /dev/null +++ b/enumtypes.c.template @@ -0,0 +1,37 @@ +/*** BEGIN file-header ***/ +/*** END file-header ***/ + +/*** BEGIN file-production ***/ +/* enumerations from "@filename@" */ +#include "@filename@" + +/*** END file-production ***/ + +/*** BEGIN value-header ***/ +GType +@enum_name@_get_type (void) +{ + static volatile gsize the_type__volatile = 0; + + if (g_once_init_enter (&the_type__volatile)) { + static const G@Type@Value values[] = { +/*** END value-header ***/ + +/*** BEGIN value-production ***/ + { @VALUENAME@, + "@VALUENAME@", + "@valuenick@" }, +/*** END value-production ***/ + +/*** BEGIN value-tail ***/ + { 0, NULL, NULL } + }; + GType the_type = g_@type@_register_static ( + g_intern_static_string ("@EnumName@"), + values); + g_once_init_leave (&the_type__volatile, the_type); + } + return the_type__volatile; +} + +/*** END value-tail ***/ -- cgit v1.2.3