From 229e1bc32248d49a7506b4b355571a3ac0e68ecd Mon Sep 17 00:00:00 2001 From: Pavel Charvat Date: Wed, 30 Aug 2006 14:42:23 +0200 Subject: [PATCH] thread-safe io-libmagick --- images/io-libmagick.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/images/io-libmagick.c b/images/io-libmagick.c index 44e45dde..543f3f8e 100644 --- a/images/io-libmagick.c +++ b/images/io-libmagick.c @@ -15,10 +15,12 @@ #include "images/images.h" #include "images/color.h" #include "images/io-main.h" + #include #include #include #include +#include #define MAX_FILE_SIZE (1 << 30) #define QUANTUM_SCALE (QuantumDepth - 8) @@ -27,6 +29,7 @@ #define ALPHA_TO_BYTE(x) (255 - QUANTUM_TO_BYTE(x)) #define BYTE_TO_ALPHA(x) (BYTE_TO_QUANTUM(255 - (x))) +static pthread_mutex_t libmagick_mutex = PTHREAD_MUTEX_INITIALIZER; static uns libmagick_counter; struct magick_read_data { @@ -38,18 +41,20 @@ struct magick_read_data { int libmagick_init(struct image_io *io UNUSED) { - // FIXME: lock + pthread_mutex_lock(&libmagick_mutex); if (!libmagick_counter++) InitializeMagick(NULL); + pthread_mutex_unlock(&libmagick_mutex); return 1; } void libmagick_cleanup(struct image_io *io UNUSED) { - // FIXME: lock + pthread_mutex_lock(&libmagick_mutex); if (!--libmagick_counter) DestroyMagick(); + pthread_mutex_unlock(&libmagick_mutex); } static void -- 2.39.2