diff options
Diffstat (limited to 'json-glib/json-enum-types.c.in')
| -rw-r--r-- | json-glib/json-enum-types.c.in | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/json-glib/json-enum-types.c.in b/json-glib/json-enum-types.c.in index 3578c6e..eba4222 100644 --- a/json-glib/json-enum-types.c.in +++ b/json-glib/json-enum-types.c.in @@ -3,15 +3,18 @@ /*** END file-header ***/ /*** BEGIN file-production ***/ + /* enumerations from "@filename@" */ #include "@filename@" + /*** END file-production ***/ /*** BEGIN value-header ***/ GType @enum_name@_get_type(void) { - static GType etype = 0; - if (G_UNLIKELY (!etype)) + static volatile gsize g_enum_type_id__volatile = 0; + + if (g_once_init_enter (&g_enum_type_id__volatile)) { const G@Type@Value values[] = { /*** END value-header ***/ @@ -23,9 +26,14 @@ GType /*** BEGIN value-tail ***/ { 0, NULL, NULL } }; - etype = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); + GType g_enum_type_id; + + g_enum_type_id = + g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); + + g_once_init_leave (&g_enum_type_id__volatile, g_enum_type_id); } - return etype; -} + return g_enum_type_id__volatile; +} /*** END value-tail ***/ |
