forked from AuroraMiddleware/gtk
Use g_once for all the mkenums template files
Without this, initialization of enum/flags values from multithreaded programs may not work correctly. Fixes #1617.
This commit is contained in:
parent
9f739ab135
commit
2a9b3c6a0c
@ -12,8 +12,10 @@
|
|||||||
GType
|
GType
|
||||||
@enum_name@_get_type (void)
|
@enum_name@_get_type (void)
|
||||||
{
|
{
|
||||||
static GType etype = 0;
|
static volatile gsize g_define_type_id__volatile = 0;
|
||||||
if (G_UNLIKELY(etype == 0)) {
|
|
||||||
|
if (g_once_init_enter (&g_define_type_id__volatile))
|
||||||
|
{
|
||||||
static const G@Type@Value values[] = {
|
static const G@Type@Value values[] = {
|
||||||
/*** END value-header ***/
|
/*** END value-header ***/
|
||||||
|
|
||||||
@ -24,9 +26,12 @@ GType
|
|||||||
/*** BEGIN value-tail ***/
|
/*** BEGIN value-tail ***/
|
||||||
{ 0, NULL, NULL }
|
{ 0, NULL, NULL }
|
||||||
};
|
};
|
||||||
etype = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
|
GType g_define_type_id =
|
||||||
|
g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
|
||||||
|
g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
|
||||||
}
|
}
|
||||||
return etype;
|
|
||||||
|
return g_define_type_id__volatile;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** END value-tail ***/
|
/*** END value-tail ***/
|
||||||
|
@ -14,8 +14,10 @@
|
|||||||
GType
|
GType
|
||||||
_@enum_name@_get_type (void)
|
_@enum_name@_get_type (void)
|
||||||
{
|
{
|
||||||
static GType etype = 0;
|
static volatile gsize g_define_type_id__volatile = 0;
|
||||||
if (G_UNLIKELY(etype == 0)) {
|
|
||||||
|
if (g_once_init_enter (&g_define_type_id__volatile))
|
||||||
|
{
|
||||||
static const G@Type@Value values[] = {
|
static const G@Type@Value values[] = {
|
||||||
/*** END value-header ***/
|
/*** END value-header ***/
|
||||||
|
|
||||||
@ -26,9 +28,12 @@ _@enum_name@_get_type (void)
|
|||||||
/*** BEGIN value-tail ***/
|
/*** BEGIN value-tail ***/
|
||||||
{ 0, NULL, NULL }
|
{ 0, NULL, NULL }
|
||||||
};
|
};
|
||||||
etype = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
|
GType g_define_type_id =
|
||||||
|
g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
|
||||||
|
g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
|
||||||
}
|
}
|
||||||
return etype;
|
|
||||||
|
return g_define_type_id__volatile;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** END value-tail ***/
|
/*** END value-tail ***/
|
||||||
|
@ -13,8 +13,10 @@
|
|||||||
GType
|
GType
|
||||||
@enum_name@_get_type (void)
|
@enum_name@_get_type (void)
|
||||||
{
|
{
|
||||||
static GType etype = 0;
|
static volatile gsize g_define_type_id__volatile = 0;
|
||||||
if (G_UNLIKELY(etype == 0)) {
|
|
||||||
|
if (g_once_init_enter (&g_define_type_id__volatile))
|
||||||
|
{
|
||||||
static const G@Type@Value values[] = {
|
static const G@Type@Value values[] = {
|
||||||
/*** END value-header ***/
|
/*** END value-header ***/
|
||||||
|
|
||||||
@ -25,9 +27,12 @@ GType
|
|||||||
/*** BEGIN value-tail ***/
|
/*** BEGIN value-tail ***/
|
||||||
{ 0, NULL, NULL }
|
{ 0, NULL, NULL }
|
||||||
};
|
};
|
||||||
etype = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
|
GType g_define_type_id =
|
||||||
|
g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
|
||||||
|
g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
|
||||||
}
|
}
|
||||||
return etype;
|
|
||||||
|
return g_define_type_id__volatile;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** END value-tail ***/
|
/*** END value-tail ***/
|
||||||
|
Loading…
Reference in New Issue
Block a user