From 3a6563d039e38a171ce5a5c09ecfe7981797e2c4 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Mon, 22 Apr 2013 15:29:43 +0200 Subject: Use new glib threading API The gthread library has been merged in glib and the threading API has changed a little. Since changes are negligible, there's no point of losing support of older glib releases, thus make it conditional. --- src/cgg.c | 2 ++ src/job-manager.c | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/cgg.c b/src/cgg.c index 4bff606..2891f6f 100644 --- a/src/cgg.c +++ b/src/cgg.c @@ -125,7 +125,9 @@ main (int argc, char* argv[]) */ LIBXML_TEST_VERSION; +#ifndef HAVE_GLIB_NEW_THREADS g_thread_init (NULL); +#endif /* Initialize ImageMagick at this point, for multithreading safety */ MagickWandGenesis(); diff --git a/src/job-manager.c b/src/job-manager.c index 8044b7f..fd41550 100644 --- a/src/job-manager.c +++ b/src/job-manager.c @@ -370,7 +370,11 @@ build_tree (TGallerySetup *setup, for (i = 0; i < jobs; i++) { error = NULL; +#ifdef HAVE_GLIB_NEW_THREADS + thread = g_thread_try_new (NULL, thread_func, job, &error); +#else thread = g_thread_create (thread_func, job, TRUE, &error); +#endif if (thread) thread_list = g_list_append (thread_list, thread); if (error) { @@ -381,9 +385,9 @@ build_tree (TGallerySetup *setup, /* wait for threads are finished */ for (l = thread_list; l != NULL; l = l->next) { + /* also unrefs the thread instance */ g_thread_join (l->data); } - /* TODO: free threads? */ g_list_free (thread_list); #else /* threads are disabled */ -- cgit v1.2.3