diff options
author | Emmanuele Bassi <ebassi@gmail.com> | 2019-05-21 16:42:05 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gmail.com> | 2019-05-21 16:42:05 +0000 |
commit | 9bbd489f06ed2390dac3808135005a9942aef5ae (patch) | |
tree | bbaac8dbc48bcab6af0bf9eaef9d7de09761b248 | |
parent | 9f739ab135c4976752555a1a582771dbee5b16cb (diff) | |
parent | 2a9b3c6a0c4a57ae95959d561414997676c0c32c (diff) | |
download | gtk+-9bbd489f06ed2390dac3808135005a9942aef5ae.tar.gz |
Merge branch 'mkenums-once' into 'master'
Use g_once for all the mkenums template files
Closes #1617
See merge request GNOME/gtk!865
-rw-r--r-- | gdk/gdkenumtypes.c.template | 21 | ||||
-rw-r--r-- | gtk/gtkprivatetypebuiltins.c.template | 21 | ||||
-rw-r--r-- | gtk/gtktypebuiltins.c.template | 21 |
3 files changed, 39 insertions, 24 deletions
diff --git a/gdk/gdkenumtypes.c.template b/gdk/gdkenumtypes.c.template index 5237d549ab..c5104e0e0d 100644 --- a/gdk/gdkenumtypes.c.template +++ b/gdk/gdkenumtypes.c.template @@ -12,21 +12,26 @@ GType @enum_name@_get_type (void) { - static GType etype = 0; - if (G_UNLIKELY(etype == 0)) { - static const G@Type@Value values[] = { + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const G@Type@Value values[] = { /*** END value-header ***/ /*** BEGIN value-production ***/ - { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, + { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, /*** END value-production ***/ /*** BEGIN value-tail ***/ - { 0, NULL, NULL } - }; - etype = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); + { 0, NULL, NULL } + }; + 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 ***/ diff --git a/gtk/gtkprivatetypebuiltins.c.template b/gtk/gtkprivatetypebuiltins.c.template index 44af1bc9dd..d7961be8ef 100644 --- a/gtk/gtkprivatetypebuiltins.c.template +++ b/gtk/gtkprivatetypebuiltins.c.template @@ -14,21 +14,26 @@ GType _@enum_name@_get_type (void) { - static GType etype = 0; - if (G_UNLIKELY(etype == 0)) { - static const G@Type@Value values[] = { + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const G@Type@Value values[] = { /*** END value-header ***/ /*** BEGIN value-production ***/ - { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, + { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, /*** END value-production ***/ /*** BEGIN value-tail ***/ - { 0, NULL, NULL } - }; - etype = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); + { 0, NULL, NULL } + }; + 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 ***/ diff --git a/gtk/gtktypebuiltins.c.template b/gtk/gtktypebuiltins.c.template index 38aaaccbd6..9a5a360f09 100644 --- a/gtk/gtktypebuiltins.c.template +++ b/gtk/gtktypebuiltins.c.template @@ -13,21 +13,26 @@ GType @enum_name@_get_type (void) { - static GType etype = 0; - if (G_UNLIKELY(etype == 0)) { - static const G@Type@Value values[] = { + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const G@Type@Value values[] = { /*** END value-header ***/ /*** BEGIN value-production ***/ - { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, + { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, /*** END value-production ***/ /*** BEGIN value-tail ***/ - { 0, NULL, NULL } - }; - etype = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); + { 0, NULL, NULL } + }; + 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 ***/ |