diff options
author | Emmanuele Bassi <ebassi@gmail.com> | 2020-12-07 23:49:00 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gmail.com> | 2020-12-07 23:49:00 +0000 |
commit | 7e168dca2438f73cfb8534bb126e799a2185aa5d (patch) | |
tree | 27d95ee9234b8dfd5d05eabcd0ef6f8cd7082df8 | |
parent | 0f6998fa544dc5002c1293ee5cb8640d16cbc1a2 (diff) | |
parent | 5ac0393304cc0d17d633e9f8c22d97d4143b6953 (diff) | |
download | gdk-pixbuf-7e168dca2438f73cfb8534bb126e799a2185aa5d.tar.gz |
Merge branch 'enum-thread-safe' into 'master'
Make enum GType registration thread safe
See merge request GNOME/gdk-pixbuf!93
-rw-r--r-- | gdk-pixbuf/gdk-pixbuf-enum-types.c.template | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/gdk-pixbuf/gdk-pixbuf-enum-types.c.template b/gdk-pixbuf/gdk-pixbuf-enum-types.c.template index a4252f336..1e30bd2b1 100644 --- a/gdk-pixbuf/gdk-pixbuf-enum-types.c.template +++ b/gdk-pixbuf/gdk-pixbuf-enum-types.c.template @@ -13,9 +13,9 @@ GType @enum_name@_get_type (void) { - static GType etype = 0; + static gsize g_define_type; - if (G_UNLIKELY(etype == 0)) { + if (g_once_init_enter (&g_define_type)) { static const G@Type@Value values[] = { /*** END value-header ***/ @@ -26,9 +26,11 @@ GType /*** BEGIN value-tail ***/ { 0, NULL, NULL } }; - etype = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); + GType enum_type = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); + + g_once_init_leave (&g_define_type, enum_type); } - return etype; + return g_define_type; } /*** END value-tail ***/ |