Make threadsafe get_type() functions.

2007-12-01  Matthias Clasen <mclasen@redhat.com>

        * gioenumtypes.c.template: Make threadsafe get_type() functions.



svn path=/trunk/; revision=6011
This commit is contained in:
Matthias Clasen 2007-12-01 17:40:19 +00:00 committed by Matthias Clasen
parent d99ce06736
commit 264aa4cd8a
3 changed files with 18 additions and 10 deletions

View File

@ -1,3 +1,7 @@
2007-12-01 Matthias Clasen <mclasen@redhat.com>
* gioenumtypes.c.template: Make threadsafe get_type() functions.
2007-12-01 Matthias Clasen <mclasen@redhat.com> 2007-12-01 Matthias Clasen <mclasen@redhat.com>
* gdirectorymonitor.c: * gdirectorymonitor.c:

View File

@ -258,9 +258,9 @@ CLEANFILES = \
$(marshal_sources) \ $(marshal_sources) \
$(NULL) $(NULL)
gioenumtypes.h: $(gio_headers) gioenumtypes.h: $(gio_headers) gioenumtypes.h.template
( cd $(srcdir) && $(top_builddir)/gobject/glib-mkenums --template gioenumtypes.h.template $(gio_headers) ) > gioenumtypes.h ( cd $(srcdir) && $(top_builddir)/gobject/glib-mkenums --template gioenumtypes.h.template $(gio_headers) ) > gioenumtypes.h
gioenumtypes.c: $(gio_headers) gioenumtypes.c: $(gio_headers) gioenumtypes.c.template
( cd $(srcdir) && $(top_builddir)/gobject/glib-mkenums --template gioenumtypes.c.template $(gio_headers) ) > gioenumtypes.c ( cd $(srcdir) && $(top_builddir)/gobject/glib-mkenums --template gioenumtypes.c.template $(gio_headers) ) > gioenumtypes.c

View File

@ -12,22 +12,26 @@
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 ***/
/*** BEGIN value-production ***/ /*** BEGIN value-production ***/
{ @VALUENAME@, "@VALUENAME@", "@valuenick@" }, { @VALUENAME@, "@VALUENAME@", "@valuenick@" },
/*** END value-production ***/ /*** END value-production ***/
/*** 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 ***/