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/8.0/unified/20240408.152505^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6f80d3c9ed2829ff4aed3e3786ab3128ffed0266;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 b329105..581dd00 100644 --- a/magick/mm_util_magick.c +++ b/magick/mm_util_magick.c @@ -28,6 +28,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; @@ -69,6 +70,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); @@ -100,6 +103,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 acde0cb..0e7c3cb 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.16 +Version: 0.4.17 Release: 0 Group: System/Libraries License: Apache-2.0