aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2021-05-12 20:22:18 -0300
committerDavid Bremner <david@tethera.net>2021-05-14 06:40:37 -0300
commit5a8d174f6797844580b52857a6254c25ce532d1c (patch)
tree202442b6ba8d8d52058e202f8ed8457f06457390
parentb1b679858868d1a004b67a1a6eccb6c9d3f755e9 (diff)
CLI: centralize initialization in notmuch_client_init
Initially make sure gmime_filter_reply initialization is thread-safe (assuming notmuch_client_init is only called once). For tidyness, also put talloc initialization in the new function.
-rw-r--r--Makefile.local1
-rw-r--r--gmime-filter-reply.c42
-rw-r--r--gmime-filter-reply.h2
-rw-r--r--notmuch-client.h4
-rw-r--r--notmuch.c7
5 files changed, 29 insertions, 27 deletions
diff --git a/Makefile.local b/Makefile.local
index bbb8f0b6..e12b94cd 100644
--- a/Makefile.local
+++ b/Makefile.local
@@ -231,6 +231,7 @@ notmuch_client_srcs = \
gmime-filter-reply.c \
hooks.c \
notmuch.c \
+ notmuch-client-init.c \
notmuch-compact.c \
notmuch-config.c \
notmuch-count.c \
diff --git a/gmime-filter-reply.c b/gmime-filter-reply.c
index 2b067669..35349cc8 100644
--- a/gmime-filter-reply.c
+++ b/gmime-filter-reply.c
@@ -43,29 +43,31 @@ static void filter_reset (GMimeFilter *filter);
static GMimeFilterClass *parent_class = NULL;
+static GType type = 0;
+static const GTypeInfo info = {
+ .class_size = sizeof (GMimeFilterReplyClass),
+ .base_init = NULL,
+ .base_finalize = NULL,
+ .class_init = (GClassInitFunc) g_mime_filter_reply_class_init,
+ .class_finalize = NULL,
+ .class_data = NULL,
+ .instance_size = sizeof (GMimeFilterReply),
+ .n_preallocs = 0,
+ .instance_init = (GInstanceInitFunc) g_mime_filter_reply_init,
+ .value_table = NULL,
+};
+
+
+void
+g_mime_filter_reply_module_init (void)
+{
+ type = g_type_register_static (GMIME_TYPE_FILTER, "GMimeFilterReply", &info, (GTypeFlags) 0);
+ parent_class = (GMimeFilterClass *) g_type_class_ref (GMIME_TYPE_FILTER);
+}
GType
g_mime_filter_reply_get_type (void)
{
- static GType type = 0;
-
- if (! type) {
- static const GTypeInfo info = {
- .class_size = sizeof (GMimeFilterReplyClass),
- .base_init = NULL,
- .base_finalize = NULL,
- .class_init = (GClassInitFunc) g_mime_filter_reply_class_init,
- .class_finalize = NULL,
- .class_data = NULL,
- .instance_size = sizeof (GMimeFilterReply),
- .n_preallocs = 0,
- .instance_init = (GInstanceInitFunc) g_mime_filter_reply_init,
- .value_table = NULL,
- };
-
- type = g_type_register_static (GMIME_TYPE_FILTER, "GMimeFilterReply", &info, (GTypeFlags) 0);
- }
-
return type;
}
@@ -76,8 +78,6 @@ g_mime_filter_reply_class_init (GMimeFilterReplyClass *klass, unused (void *clas
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GMimeFilterClass *filter_class = GMIME_FILTER_CLASS (klass);
- parent_class = (GMimeFilterClass *) g_type_class_ref (GMIME_TYPE_FILTER);
-
object_class->finalize = g_mime_filter_reply_finalize;
filter_class->copy = filter_copy;
diff --git a/gmime-filter-reply.h b/gmime-filter-reply.h
index 7cdefcd1..988fe2d6 100644
--- a/gmime-filter-reply.h
+++ b/gmime-filter-reply.h
@@ -21,6 +21,8 @@
#include <gmime/gmime-filter.h>
+void g_mime_filter_reply_module_init (void);
+
G_BEGIN_DECLS
#define GMIME_TYPE_FILTER_REPLY (g_mime_filter_reply_get_type ())
diff --git a/notmuch-client.h b/notmuch-client.h
index 270553ad..8227fea4 100644
--- a/notmuch-client.h
+++ b/notmuch-client.h
@@ -250,6 +250,10 @@ json_quote_chararray (const void *ctx, const char *str, const size_t len);
char *
json_quote_str (const void *ctx, const char *str);
+/* notmuch-client-init.c */
+
+void notmuch_client_init (void);
+
/* notmuch-config.c */
typedef enum {
diff --git a/notmuch.c b/notmuch.c
index 2429999c..9ca3a4be 100644
--- a/notmuch.c
+++ b/notmuch.c
@@ -464,15 +464,10 @@ main (int argc, char *argv[])
{ }
};
- talloc_enable_null_tracking ();
+ notmuch_client_init ();
local = talloc_new (NULL);
- g_mime_init ();
-#if ! GLIB_CHECK_VERSION (2, 35, 1)
- g_type_init ();
-#endif
-
/* Globally default to the current output format version. */
notmuch_format_version = NOTMUCH_FORMAT_CUR;