From: Jiyong Date: Thu, 4 Apr 2024 23:27:12 +0000 (+0900) Subject: Bug fix. add lock for GraphicsMagick function X-Git-Tag: accepted/tizen/unified/20240408.160543^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F07%2F309107%2F6;p=platform%2Fcore%2Fmultimedia%2Flibmm-utility.git Bug fix. add lock for GraphicsMagick function - DF240401-00513 [Cause] The crach occurs during destroying semaphore lock when multi-threads are processed(decoding). In GraphicsMagick, InitialMagick() & DestroyMagick() functions are not thread-safe. [Solution] So locker is added for GraphicsMagick. Change-Id: Ia19a89dd32994aec5cda5bcdd13acbbf449da947 --- diff --git a/magick/mm_util_magick.c b/magick/mm_util_magick.c index 83d82d1..d1eec31 100644 --- a/magick/mm_util_magick.c +++ b/magick/mm_util_magick.c @@ -26,6 +26,7 @@ #include "mm_util_private.h" #include "mm_util_magick.h" +static GMutex gm_lock; static bool __mm_util_check_rotation(mm_util_rotate_type_e rotation); static void __mm_util_magick_fatal_error_handler(const ExceptionType excep, const char *reason, const char *message) MAGICK_FUNC_NORETURN; @@ -67,6 +68,8 @@ static void __mm_util_magick_fatal_error_handler(const ExceptionType excep, cons static void __mm_util_init(ExceptionInfo *exception) { + g_mutex_lock(&gm_lock); + InitializeMagick(NULL); if (exception != NULL) GetExceptionInfo(exception); @@ -98,6 +101,8 @@ static void __mm_util_finalize(Image *image_1, Image *image_2, ExceptionInfo *ex DestroyExceptionInfo(exception); DestroyMagick(); + + g_mutex_unlock(&gm_lock); } static const char * __mm_util_get_map(mm_util_color_format_e format) diff --git a/packaging/libmm-utility.spec b/packaging/libmm-utility.spec index b1b7164..acd6165 100644 --- a/packaging/libmm-utility.spec +++ b/packaging/libmm-utility.spec @@ -1,6 +1,6 @@ Name: libmm-utility Summary: Multimedia Framework Utility Library -Version: 0.4.20 +Version: 0.4.21 Release: 0 Group: System/Libraries License: Apache-2.0