summaryrefslogtreecommitdiff
path: root/common-modified
diff options
context:
space:
mode:
authorOlivier CrĂȘte <olivier.crete@collabora.co.uk>2009-07-10 17:17:51 +0100
committerOlivier CrĂȘte <olivier.crete@collabora.co.uk>2009-07-14 12:49:45 -0400
commit0adc1ade20915588cf1c6c129e901e792f488977 (patch)
tree6dc5ab4eb0acdc93839d6e1a785e446ad90817f3 /common-modified
parent53c3eff23f2d56d17ade27dcd964c55985f448d3 (diff)
downloadfarstream-0adc1ade20915588cf1c6c129e901e792f488977.tar.gz
Register enum types in a thread safe way
Diffstat (limited to 'common-modified')
-rw-r--r--common-modified/glib-gen.mak4
1 files changed, 2 insertions, 2 deletions
diff --git a/common-modified/glib-gen.mak b/common-modified/glib-gen.mak
index 068b945f..581484f2 100644
--- a/common-modified/glib-gen.mak
+++ b/common-modified/glib-gen.mak
@@ -30,9 +30,9 @@ enum_headers=$(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
glib-mkenums \
--fhead "#include \"$*-enum-types.h\"\n$(enum_headers)" \
--fprod "\n/* enumerations from \"@filename@\" */" \
- --vhead "GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {" \
+ --vhead "GType\n@enum_name@_get_type (void)\n{\n static volatile gsize g_define_type_id__volatile = 0;\n if (g_once_init_enter (&g_define_type_id__volatile)) {\n static const G@Type@Value values[] = {" \
--vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
- --vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (\"@EnumName@\", values);\n }\n return etype;\n}\n" \
+ --vtail " { 0, NULL, NULL }\n };\n GType g_define_type_id = g_@type@_register_static (\"@EnumName@\", values);\n g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);\n }\n return g_define_type_id__volatile;\n}\n" \
$^ > $@
# a hack rule to make sure .Plo files exist because they get include'd