summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gmail.com>2020-12-07 23:49:00 +0000
committerEmmanuele Bassi <ebassi@gmail.com>2020-12-07 23:49:00 +0000
commit7e168dca2438f73cfb8534bb126e799a2185aa5d (patch)
tree27d95ee9234b8dfd5d05eabcd0ef6f8cd7082df8
parent0f6998fa544dc5002c1293ee5cb8640d16cbc1a2 (diff)
parent5ac0393304cc0d17d633e9f8c22d97d4143b6953 (diff)
downloadgdk-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.template10
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 ***/