[evolution] Bug #681837 - Make enum type registration thread safe
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] Bug #681837 - Make enum type registration thread safe
- Date: Fri, 12 Apr 2013 07:50:56 +0000 (UTC)
commit 1c5f6313c58187ce7682058057b63e14ae6f70e5
Author: Milan Crha <mcrha redhat com>
Date: Fri Apr 12 09:50:06 2013 +0200
Bug #681837 - Make enum type registration thread safe
Makefile.am | 2 +
e-util/Makefile.am | 15 +++++---
...il-enumtypes.c.template => enumtypes.c.template | 13 +++----
...il-enumtypes.h.template => enumtypes.h.template | 11 ++----
libemail-engine/Makefile.am | 18 +++++-----
libemail-engine/e-mail-enumtypes.c.template | 38 --------------------
libemail-engine/e-mail-enumtypes.h.template | 27 --------------
shell/Makefile.am | 15 +++++---
shell/e-shell-enumtypes.c.template | 38 --------------------
shell/e-shell-enumtypes.h.template | 27 --------------
10 files changed, 39 insertions(+), 165 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 888734a..856e459 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -25,6 +25,8 @@ EXTRA_DIST = \
MAINTAINERS \
NEWS \
NEWS-1.0 \
+ enumtypes.c.template \
+ enumtypes.h.template \
marshal.mk \
iconv-detect.c \
plugin.mk \
diff --git a/e-util/Makefile.am b/e-util/Makefile.am
index 5e974f2..367add5 100644
--- a/e-util/Makefile.am
+++ b/e-util/Makefile.am
@@ -6,11 +6,16 @@ ruledir = $(privdatadir)
ENUM_TYPES = e-util-enums.h
-e-util-enumtypes.h: e-util-enumtypes.h.template $(ENUM_TYPES)
- $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template e-util-enumtypes.h.template $(ENUM_TYPES)) >
$@
+e-util-enumtypes.h: $(top_srcdir)/enumtypes.h.template $(ENUM_TYPES)
+ $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template $(top_srcdir)/enumtypes.h.template \
+ --fhead "#ifndef E_UTIL_ENUMTYPES_H\n#define E_UTIL_ENUMTYPES_H\n" \
+ --ftail "#endif /* E_UTIL_ENUMTYPES_H */\n" \
+ $(ENUM_TYPES)) > $@
-e-util-enumtypes.c: e-util-enumtypes.c.template $(ENUM_TYPES)
- $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template e-util-enumtypes.c.template $(ENUM_TYPES)) >
$@
+e-util-enumtypes.c: $(top_srcdir)/enumtypes.c.template $(ENUM_TYPES)
+ $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template $(top_srcdir)/enumtypes.c.template \
+ --fhead "#include \"e-util-enumtypes.h\"" \
+ $(ENUM_TYPES)) > $@
e-marshal.h: e-marshal.list
$(AM_V_GEN) $(GLIB_GENMARSHAL) --header --prefix=e_marshal $^ > e-marshal.h.tmp && \
@@ -648,8 +653,6 @@ test_source_selector_SOURCES = test-source-selector.c
test_source_selector_LDADD = $(TEST_LDADD)
EXTRA_DIST = \
- e-util-enumtypes.h.template \
- e-util-enumtypes.c.template \
e-system.error.xml \
filter.error.xml \
widgets.error.xml \
diff --git a/e-util/e-util-enumtypes.c.template b/enumtypes.c.template
similarity index 72%
rename from e-util/e-util-enumtypes.c.template
rename to enumtypes.c.template
index cb26347..0a99121 100644
--- a/e-util/e-util-enumtypes.c.template
+++ b/enumtypes.c.template
@@ -1,6 +1,4 @@
/*** BEGIN file-header ***/
-#include "e-util-enumtypes.h"
-
/*** END file-header ***/
/*** BEGIN file-production ***/
@@ -13,9 +11,9 @@
GType
@enum_name _get_type (void)
{
- static GType the_type = 0;
-
- if (the_type == 0) {
+ static volatile gsize the_type__volatile = 0;
+
+ if (g_once_init_enter (&the_type__volatile)) {
static const G Type@Value values[] = {
/*** END value-header ***/
@@ -28,11 +26,12 @@ GType
/*** BEGIN value-tail ***/
{ 0, NULL, NULL }
};
- the_type = g_ type@_register_static (
+ GType the_type = g_ type@_register_static (
g_intern_static_string ("@EnumName@"),
values);
+ g_once_init_leave (&the_type__volatile, the_type);
}
- return the_type;
+ return the_type__volatile;
}
/*** END value-tail ***/
diff --git a/e-util/e-util-enumtypes.h.template b/enumtypes.h.template
similarity index 73%
rename from e-util/e-util-enumtypes.h.template
rename to enumtypes.h.template
index c5bfa9c..e421edd 100644
--- a/e-util/e-util-enumtypes.h.template
+++ b/enumtypes.h.template
@@ -1,20 +1,18 @@
/*** BEGIN file-header ***/
-#ifndef E_UTIL_ENUMTYPES_H
-#define E_UTIL_ENUMTYPES_H
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
#include <glib-object.h>
G_BEGIN_DECLS
-/*** END file-header ***/
-
-/*** BEGIN file-production ***/
/* Enumerations from "@filename@" */
/*** END file-production ***/
/*** BEGIN enumeration-production ***/
-#define E_TYPE_ ENUMSHORT@ (@enum_name _get_type())
+#define @ENUMPREFIX _TYPE_@ENUMSHORT@ (@enum_name _get_type())
GType @enum_name _get_type (void) G_GNUC_CONST;
/*** END enumeration-production ***/
@@ -22,6 +20,5 @@ GType @enum_name _get_type (void) G_GNUC_CONST;
/*** BEGIN file-tail ***/
G_END_DECLS
-#endif /* E_UTIL_ENUMTYPES_H */
/*** END file-tail ***/
diff --git a/libemail-engine/Makefile.am b/libemail-engine/Makefile.am
index 60a8437..d8f8207 100644
--- a/libemail-engine/Makefile.am
+++ b/libemail-engine/Makefile.am
@@ -4,11 +4,16 @@ privsolib_LTLIBRARIES = libemail-engine.la
ENUM_TYPES = e-mail-enums.h
-e-mail-enumtypes.h: e-mail-enumtypes.h.template $(ENUM_TYPES)
- $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template e-mail-enumtypes.h.template $(ENUM_TYPES)) >
$@
+e-mail-enumtypes.h: $(top_srcdir)/enumtypes.h.template $(ENUM_TYPES)
+ $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template $(top_srcdir)/enumtypes.h.template \
+ --fhead "#ifndef E_MAIL_ENUMTYPES_H\n#define E_MAIL_ENUMTYPES_H\n" \
+ --ftail "#endif /* E_MAIL_ENUMTYPES_H */\n" \
+ $(ENUM_TYPES)) > $@
-e-mail-enumtypes.c: e-mail-enumtypes.c.template $(ENUM_TYPES)
- $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template e-mail-enumtypes.c.template $(ENUM_TYPES)) >
$@
+e-mail-enumtypes.c: $(top_srcdir)/enumtypes.c.template $(ENUM_TYPES)
+ $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template $(top_srcdir)/enumtypes.c.template \
+ --fhead "#include \"e-mail-enumtypes.h\"" \
+ $(ENUM_TYPES)) > $@
ENUM_GENERATED = e-mail-enumtypes.h e-mail-enumtypes.c
@@ -86,11 +91,6 @@ BUILT_SOURCES = $(ENUM_GENERATED)
CLEANFILES = $(BUILT_SOURCES)
DISTCLEANFILES = $(pkgconfig_DATA)
-EXTRA_DIST = \
- e-mail-enumtypes.h.template \
- e-mail-enumtypes.c.template \
- $(NULL)
-
dist-hook:
cd $(distdir); rm -f $(BUILT_SOURCES)
diff --git a/shell/Makefile.am b/shell/Makefile.am
index 355ec69..d36547e 100644
--- a/shell/Makefile.am
+++ b/shell/Makefile.am
@@ -8,11 +8,16 @@ eshellincludedir = $(privincludedir)/shell
ENUM_TYPES = e-shell.h
-e-shell-enumtypes.h: e-shell-enumtypes.h.template $(ENUM_TYPES)
- $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template e-shell-enumtypes.h.template $(ENUM_TYPES)) >
$@
+e-shell-enumtypes.h: $(top_srcdir)/enumtypes.h.template $(ENUM_TYPES)
+ $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template $(top_srcdir)/enumtypes.h.template \
+ --fhead "#ifndef E_SHELL_ENUMTYPES_H\n#define E_SHELL_ENUMTYPES_H\n" \
+ --ftail "#endif /* E_SHELL_ENUMTYPES_H */\n" \
+ $(ENUM_TYPES)) > $@
-e-shell-enumtypes.c: e-shell-enumtypes.c.template $(ENUM_TYPES)
- $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template e-shell-enumtypes.c.template $(ENUM_TYPES)) >
$@
+e-shell-enumtypes.c: $(top_srcdir)/enumtypes.c.template $(ENUM_TYPES)
+ $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template $(top_srcdir)/enumtypes.c.template \
+ --fhead "#include \"e-shell-enumtypes.h\"" \
+ $(ENUM_TYPES)) > $@
ENUM_GENERATED = e-shell-enumtypes.h e-shell-enumtypes.c
@@ -165,8 +170,6 @@ errordir = $(privdatadir)/errors
EXTRA_DIST = \
evo-version.h.in \
- e-shell-enumtypes.h.template \
- e-shell-enumtypes.c.template \
shell.error.xml \
evolution-icon.rc \
evolution.ico \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]