From: cristy Date: Sun, 16 Feb 2014 15:10:39 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~2669 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=04b11db5504ecdf205114ae7e9e68774a1ff0b9b;p=imagemagick --- diff --git a/MagickCore/annotate.c b/MagickCore/annotate.c index d945ccade..0a985f2ed 100644 --- a/MagickCore/annotate.c +++ b/MagickCore/annotate.c @@ -170,7 +170,7 @@ MagickPrivate MagickBooleanType AnnotateComponentGenesis(void) MagickPrivate void AnnotateComponentTerminus(void) { if (annotate_semaphore == (SemaphoreInfo *) NULL) - annotate_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&annotate_semaphore); RelinquishSemaphoreInfo(&annotate_semaphore); } @@ -1904,7 +1904,7 @@ static MagickBooleanType RenderX11(Image *image,const DrawInfo *draw_info, status; if (annotate_semaphore == (SemaphoreInfo *) NULL) - annotate_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&annotate_semaphore); LockSemaphoreInfo(annotate_semaphore); status=XRenderImage(image,draw_info,offset,metrics,exception); UnlockSemaphoreInfo(annotate_semaphore); diff --git a/MagickCore/cache.c b/MagickCore/cache.c index 290f054f8..4e0a0c6a6 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -349,7 +349,7 @@ MagickPrivate MagickBooleanType CacheComponentGenesis(void) MagickPrivate void CacheComponentTerminus(void) { if (cache_semaphore == (SemaphoreInfo *) NULL) - cache_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&cache_semaphore); LockSemaphoreInfo(cache_semaphore); instantiate_cache=MagickFalse; UnlockSemaphoreInfo(cache_semaphore); diff --git a/MagickCore/coder.c b/MagickCore/coder.c index 2095db0d8..1ca26c391 100644 --- a/MagickCore/coder.c +++ b/MagickCore/coder.c @@ -290,7 +290,7 @@ MagickPrivate MagickBooleanType CoderComponentGenesis(void) MagickPrivate void CoderComponentTerminus(void) { if (coder_semaphore == (SemaphoreInfo *) NULL) - coder_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&coder_semaphore); LockSemaphoreInfo(coder_semaphore); if (coder_list != (SplayTreeInfo *) NULL) coder_list=DestroySplayTree(coder_list); @@ -542,7 +542,7 @@ static MagickBooleanType InitializeCoderList(ExceptionInfo *exception) (instantiate_coder == MagickFalse)) { if (coder_semaphore == (SemaphoreInfo *) NULL) - coder_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&coder_semaphore); LockSemaphoreInfo(coder_semaphore); if ((coder_list == (SplayTreeInfo *) NULL) && (instantiate_coder == MagickFalse)) diff --git a/MagickCore/color.c b/MagickCore/color.c index 08fbed799..359b6297f 100644 --- a/MagickCore/color.c +++ b/MagickCore/color.c @@ -863,7 +863,7 @@ static void *DestroyColorElement(void *color_info) MagickPrivate void ColorComponentTerminus(void) { if (color_semaphore == (SemaphoreInfo *) NULL) - color_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&color_semaphore); LockSemaphoreInfo(color_semaphore); if (color_list != (LinkedListInfo *) NULL) color_list=DestroyLinkedList(color_list,DestroyColorElement); @@ -1519,7 +1519,7 @@ static MagickBooleanType InitializeColorList(ExceptionInfo *exception) IfMagickFalse(instantiate_color)) { if (color_semaphore == (SemaphoreInfo *) NULL) - color_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&color_semaphore); LockSemaphoreInfo(color_semaphore); if ((color_list == (LinkedListInfo *) NULL) && IfMagickFalse(instantiate_color)) diff --git a/MagickCore/configure.c b/MagickCore/configure.c index 028ea7972..43ed3169b 100644 --- a/MagickCore/configure.c +++ b/MagickCore/configure.c @@ -187,7 +187,7 @@ static void *DestroyConfigureElement(void *configure_info) MagickPrivate void ConfigureComponentTerminus(void) { if (configure_semaphore == (SemaphoreInfo *) NULL) - configure_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&configure_semaphore); LockSemaphoreInfo(configure_semaphore); if (configure_list != (LinkedListInfo *) NULL) configure_list=DestroyLinkedList(configure_list,DestroyConfigureElement); @@ -906,7 +906,7 @@ static MagickBooleanType InitializeConfigureList(ExceptionInfo *exception) (instantiate_configure == MagickFalse)) { if (configure_semaphore == (SemaphoreInfo *) NULL) - configure_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&configure_semaphore); LockSemaphoreInfo(configure_semaphore); if ((configure_list == (LinkedListInfo *) NULL) && (instantiate_configure == MagickFalse)) diff --git a/MagickCore/constitute.c b/MagickCore/constitute.c index 28a231556..ca4653496 100644 --- a/MagickCore/constitute.c +++ b/MagickCore/constitute.c @@ -128,7 +128,7 @@ MagickPrivate MagickBooleanType ConstituteComponentGenesis(void) MagickPrivate void ConstituteComponentTerminus(void) { if (constitute_semaphore == (SemaphoreInfo *) NULL) - constitute_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&constitute_semaphore); RelinquishSemaphoreInfo(&constitute_semaphore); } @@ -528,7 +528,7 @@ MagickExport Image *ReadImage(const ImageInfo *image_info, } image=NewImageList(); if (constitute_semaphore == (SemaphoreInfo *) NULL) - constitute_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&constitute_semaphore); if ((magick_info == (const MagickInfo *) NULL) || (GetImageDecoder(magick_info) == (DecodeImageHandler *) NULL)) { @@ -1142,7 +1142,7 @@ MagickExport MagickBooleanType WriteImage(const ImageInfo *image_info, } } if (constitute_semaphore == (SemaphoreInfo *) NULL) - constitute_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&constitute_semaphore); if ((magick_info != (const MagickInfo *) NULL) && (GetImageEncoder(magick_info) != (EncodeImageHandler *) NULL)) { diff --git a/MagickCore/delegate.c b/MagickCore/delegate.c index a7d7a63ec..2ae07e82a 100644 --- a/MagickCore/delegate.c +++ b/MagickCore/delegate.c @@ -207,7 +207,7 @@ static void *DestroyDelegate(void *delegate_info) MagickPrivate void DelegateComponentTerminus(void) { if (delegate_semaphore == (SemaphoreInfo *) NULL) - delegate_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&delegate_semaphore); LockSemaphoreInfo(delegate_semaphore); if (delegate_list != (LinkedListInfo *) NULL) delegate_list=DestroyLinkedList(delegate_list,DestroyDelegate); @@ -713,7 +713,7 @@ static MagickBooleanType InitializeDelegateList(ExceptionInfo *exception) IfMagickFalse(instantiate_delegate)) { if (delegate_semaphore == (SemaphoreInfo *) NULL) - delegate_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&delegate_semaphore); LockSemaphoreInfo(delegate_semaphore); if ((delegate_list == (LinkedListInfo *) NULL) && IfMagickFalse(instantiate_delegate)) diff --git a/MagickCore/exception.c b/MagickCore/exception.c index f08afba16..3929ba6e3 100644 --- a/MagickCore/exception.c +++ b/MagickCore/exception.c @@ -414,7 +414,7 @@ MagickExport ExceptionInfo *DestroyExceptionInfo(ExceptionInfo *exception) assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); if (exception->semaphore == (SemaphoreInfo *) NULL) - exception->semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&exception->semaphore); LockSemaphoreInfo(exception->semaphore); exception->severity=UndefinedException; if (exception->exceptions != (void *) NULL) diff --git a/MagickCore/locale.c b/MagickCore/locale.c index 7033e1c81..a5bf7d538 100644 --- a/MagickCore/locale.c +++ b/MagickCore/locale.c @@ -817,7 +817,7 @@ static MagickBooleanType InitializeLocaleList(ExceptionInfo *exception) (instantiate_locale == MagickFalse)) { if (locale_semaphore == (SemaphoreInfo *) NULL) - locale_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&locale_semaphore); LockSemaphoreInfo(locale_semaphore); if ((locale_list == (SplayTreeInfo *) NULL) && (instantiate_locale == MagickFalse)) @@ -1417,7 +1417,7 @@ MagickPrivate MagickBooleanType LocaleComponentGenesis(void) MagickPrivate void LocaleComponentTerminus(void) { if (locale_semaphore == (SemaphoreInfo *) NULL) - locale_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&locale_semaphore); LockSemaphoreInfo(locale_semaphore); if (locale_list != (SplayTreeInfo *) NULL) locale_list=DestroySplayTree(locale_list); diff --git a/MagickCore/log.c b/MagickCore/log.c index 60186eb34..b00060766 100644 --- a/MagickCore/log.c +++ b/MagickCore/log.c @@ -537,7 +537,7 @@ static MagickBooleanType InitializeLogList(ExceptionInfo *exception) if ((log_list == (LinkedListInfo *) NULL) && (instantiate_log == MagickFalse)) { if (log_semaphore == (SemaphoreInfo *) NULL) - log_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&log_semaphore); LockSemaphoreInfo(log_semaphore); if ((log_list == (LinkedListInfo *) NULL) && (instantiate_log == MagickFalse)) @@ -759,7 +759,7 @@ static void *DestroyLogElement(void *log_info) MagickPrivate void LogComponentTerminus(void) { if (log_semaphore == (SemaphoreInfo *) NULL) - log_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&log_semaphore); LockSemaphoreInfo(log_semaphore); if (log_list != (LinkedListInfo *) NULL) log_list=DestroyLinkedList(log_list,DestroyLogElement); diff --git a/MagickCore/magic.c b/MagickCore/magic.c index 0ec0b3730..f44684adb 100644 --- a/MagickCore/magic.c +++ b/MagickCore/magic.c @@ -533,7 +533,7 @@ static MagickBooleanType InitializeMagicList(ExceptionInfo *exception) (instantiate_magic == MagickFalse)) { if (magic_semaphore == (SemaphoreInfo *) NULL) - magic_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&magic_semaphore); LockSemaphoreInfo(magic_semaphore); if ((magic_list == (LinkedListInfo *) NULL) && (instantiate_magic == MagickFalse)) @@ -1071,7 +1071,7 @@ static void *DestroyMagicElement(void *magic_info) MagickPrivate void MagicComponentTerminus(void) { if (magic_semaphore == (SemaphoreInfo *) NULL) - magic_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&magic_semaphore); LockSemaphoreInfo(magic_semaphore); if (magic_list != (LinkedListInfo *) NULL) magic_list=DestroyLinkedList(magic_list,DestroyMagicElement); diff --git a/MagickCore/magick.c b/MagickCore/magick.c index 5dba4c697..d2f0ef4be 100644 --- a/MagickCore/magick.c +++ b/MagickCore/magick.c @@ -844,7 +844,7 @@ static MagickBooleanType InitializeMagickList(ExceptionInfo *exception) (instantiate_magick == MagickFalse)) { if (magick_semaphore == (SemaphoreInfo *) NULL) - magick_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&magick_semaphore); LockSemaphoreInfo(magick_semaphore); if ((magick_list == (SplayTreeInfo *) NULL) && (instantiate_magick == MagickFalse)) @@ -1100,7 +1100,7 @@ MagickPrivate MagickBooleanType MagickComponentGenesis(void) MagickPrivate void MagickComponentTerminus(void) { if (magick_semaphore == (SemaphoreInfo *) NULL) - magick_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&magick_semaphore); LockSemaphoreInfo(magick_semaphore); if (magick_list != (SplayTreeInfo *) NULL) magick_list=DestroySplayTree(magick_list); diff --git a/MagickCore/memory.c b/MagickCore/memory.c index 119f5f647..1edb4ad96 100644 --- a/MagickCore/memory.c +++ b/MagickCore/memory.c @@ -463,7 +463,7 @@ MagickExport void *AcquireMagickMemory(const size_t size) memory=memory_methods.acquire_memory_handler(size == 0 ? 1UL : size); #else if (memory_semaphore == (SemaphoreInfo *) NULL) - memory_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&memory_semaphore); if (free_segments == (DataSegmentInfo *) NULL) { LockSemaphoreInfo(memory_semaphore); @@ -724,7 +724,7 @@ MagickExport void DestroyMagickMemory(void) i; if (memory_semaphore == (SemaphoreInfo *) NULL) - memory_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&memory_semaphore); LockSemaphoreInfo(memory_semaphore); UnlockSemaphoreInfo(memory_semaphore); for (i=0; i < (ssize_t) memory_pool.number_segments; i++) diff --git a/MagickCore/mime.c b/MagickCore/mime.c index fed83d996..f7dcb23d1 100644 --- a/MagickCore/mime.c +++ b/MagickCore/mime.c @@ -608,7 +608,7 @@ static MagickBooleanType InitializeMimeList(ExceptionInfo *exception) (instantiate_mime == MagickFalse)) { if (mime_semaphore == (SemaphoreInfo *) NULL) - mime_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&mime_semaphore); LockSemaphoreInfo(mime_semaphore); if ((mime_list == (LinkedListInfo *) NULL) && (instantiate_mime == MagickFalse)) @@ -1102,7 +1102,7 @@ static void *DestroyMimeElement(void *mime_info) MagickPrivate void MimeComponentTerminus(void) { if (mime_semaphore == (SemaphoreInfo *) NULL) - mime_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&mime_semaphore); LockSemaphoreInfo(mime_semaphore); if (mime_list != (LinkedListInfo *) NULL) mime_list=DestroyLinkedList(mime_list,DestroyMimeElement); diff --git a/MagickCore/module.c b/MagickCore/module.c index 9a182120e..8d5c61f5e 100644 --- a/MagickCore/module.c +++ b/MagickCore/module.c @@ -869,7 +869,7 @@ static MagickBooleanType InitializeModuleList( (instantiate_module == MagickFalse)) { if (module_semaphore == (SemaphoreInfo *) NULL) - module_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&module_semaphore); LockSemaphoreInfo(module_semaphore); if ((module_list == (SplayTreeInfo *) NULL) && (instantiate_module == MagickFalse)) @@ -1192,7 +1192,7 @@ MagickPrivate MagickBooleanType ModuleComponentGenesis(void) MagickPrivate void ModuleComponentTerminus(void) { if (module_semaphore == (SemaphoreInfo *) NULL) - module_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&module_semaphore); DestroyModuleList(); RelinquishSemaphoreInfo(&module_semaphore); } diff --git a/MagickCore/opencl.c b/MagickCore/opencl.c index c9614d090..31a05c33e 100644 --- a/MagickCore/opencl.c +++ b/MagickCore/opencl.c @@ -126,7 +126,7 @@ MagickExport MagickCLEnv AcquireMagickOpenCLEnv() if (clEnv != NULL) { memset(clEnv, 0, sizeof(struct _MagickCLEnv)); - clEnv->lock=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&clEnv->lock); } return clEnv; } @@ -203,7 +203,7 @@ MagickExport MagickCLEnv GetDefaultOpenCLEnv() { if (defaultCLEnvLock == NULL) { - defaultCLEnvLock=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&defaultCLEnvLock); } LockSemaphoreInfo(defaultCLEnvLock); defaultCLEnv = AcquireMagickOpenCLEnv(); @@ -215,7 +215,7 @@ MagickExport MagickCLEnv GetDefaultOpenCLEnv() static void LockDefaultOpenCLEnv() { if (defaultCLEnvLock == NULL) { - defaultCLEnvLock=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&defaultCLEnvLock); } LockSemaphoreInfo(defaultCLEnvLock); } @@ -223,7 +223,7 @@ static void LockDefaultOpenCLEnv() { static void UnlockDefaultOpenCLEnv() { if (defaultCLEnvLock == NULL) { - defaultCLEnvLock=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&defaultCLEnvLock); } else UnlockSemaphoreInfo(defaultCLEnvLock); @@ -2543,7 +2543,7 @@ const char* GetOpenCLCachedFilesDirectory() { if (openclCachedFilesDirectory == NULL) { if (openclCachedFilesDirectoryLock == NULL) { - openclCachedFilesDirectoryLock=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&openclCachedFilesDirectoryLock); } LockSemaphoreInfo(openclCachedFilesDirectoryLock); if (openclCachedFilesDirectory == NULL) { diff --git a/MagickCore/policy.c b/MagickCore/policy.c index e30197768..19d09c4d5 100644 --- a/MagickCore/policy.c +++ b/MagickCore/policy.c @@ -429,7 +429,7 @@ static MagickBooleanType InitializePolicyList(ExceptionInfo *exception) (instantiate_policy == MagickFalse)) { if (policy_semaphore == (SemaphoreInfo *) NULL) - policy_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&policy_semaphore); LockSemaphoreInfo(policy_semaphore); if ((policy_list == (LinkedListInfo *) NULL) && (instantiate_policy == MagickFalse)) @@ -1016,7 +1016,7 @@ static void *DestroyPolicyElement(void *policy_info) MagickPrivate void PolicyComponentTerminus(void) { if (policy_semaphore == (SemaphoreInfo *) NULL) - policy_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&policy_semaphore); LockSemaphoreInfo(policy_semaphore); if (policy_list != (LinkedListInfo *) NULL) policy_list=DestroyLinkedList(policy_list,DestroyPolicyElement); diff --git a/MagickCore/random.c b/MagickCore/random.c index b9990724f..e5eb9213f 100644 --- a/MagickCore/random.c +++ b/MagickCore/random.c @@ -762,7 +762,7 @@ MagickPrivate MagickBooleanType RandomComponentGenesis(void) MagickPrivate void RandomComponentTerminus(void) { if (random_semaphore == (SemaphoreInfo *) NULL) - random_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&random_semaphore); RelinquishSemaphoreInfo(&random_semaphore); } diff --git a/MagickCore/registry.c b/MagickCore/registry.c index f0592b7e9..d5343c54d 100644 --- a/MagickCore/registry.c +++ b/MagickCore/registry.c @@ -325,7 +325,7 @@ MagickPrivate MagickBooleanType RegistryComponentGenesis(void) MagickPrivate void RegistryComponentTerminus(void) { if (registry_semaphore == (SemaphoreInfo *) NULL) - registry_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(®istry_semaphore); LockSemaphoreInfo(registry_semaphore); if (IsEventLogging() != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"..."); @@ -528,7 +528,7 @@ MagickExport MagickBooleanType SetImageRegistry(const RegistryType type, (instantiate_registry == MagickFalse)) { if (registry_semaphore == (SemaphoreInfo *) NULL) - registry_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(®istry_semaphore); LockSemaphoreInfo(registry_semaphore); if ((registry == (SplayTreeInfo *) NULL) && (instantiate_registry == MagickFalse)) diff --git a/MagickCore/resource.c b/MagickCore/resource.c index 9f99b64a1..f6da52a7e 100644 --- a/MagickCore/resource.c +++ b/MagickCore/resource.c @@ -167,7 +167,7 @@ MagickExport MagickBooleanType AcquireMagickResource(const ResourceType type, status=MagickFalse; (void) FormatMagickSize(size,MagickFalse,resource_request); if (resource_semaphore == (SemaphoreInfo *) NULL) - resource_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&resource_semaphore); LockSemaphoreInfo(resource_semaphore); switch (type) { @@ -501,7 +501,7 @@ MagickExport int AcquireUniqueFileResource(char *path) if (file == -1) return(file); if (resource_semaphore == (SemaphoreInfo *) NULL) - resource_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&resource_semaphore); LockSemaphoreInfo(resource_semaphore); if (temporary_resources == (SplayTreeInfo *) NULL) temporary_resources=NewSplayTree(CompareSplayTreeString, @@ -619,7 +619,7 @@ MagickExport MagickSizeType GetMagickResourceLimit(const ResourceType type) resource=0; if (resource_semaphore == (SemaphoreInfo *) NULL) - resource_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&resource_semaphore); LockSemaphoreInfo(resource_semaphore); switch (type) { @@ -708,7 +708,7 @@ MagickExport MagickBooleanType ListMagickResourceInfo(FILE *file, if (file == (const FILE *) NULL) file=stdout; if (resource_semaphore == (SemaphoreInfo *) NULL) - resource_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&resource_semaphore); LockSemaphoreInfo(resource_semaphore); (void) FormatMagickSize(resource_info.area_limit,MagickFalse,area_limit); (void) FormatMagickSize(resource_info.memory_limit,MagickTrue,memory_limit); @@ -770,7 +770,7 @@ MagickExport void RelinquishMagickResource(const ResourceType type, (void) FormatMagickSize(size,MagickFalse,resource_request); if (resource_semaphore == (SemaphoreInfo *) NULL) - resource_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&resource_semaphore); LockSemaphoreInfo(resource_semaphore); switch (type) { diff --git a/MagickCore/semaphore.c b/MagickCore/semaphore.c index 033a0acc1..e8b4bab7e 100644 --- a/MagickCore/semaphore.c +++ b/MagickCore/semaphore.c @@ -236,6 +236,41 @@ MagickExport SemaphoreInfo *AcquireSemaphoreInfo(void) % % % % % % +% A c t i v a t e S e m a p h o r e I n f o % +% % +% % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ActivateSemaphoreInfo() acquires a semaphore. +% +% The format of the ActivateSemaphoreInfo method is: +% +% void ActivateSemaphoreInfo(SemaphoreInfo **semaphore_info) +% +% A description of each parameter follows: +% +% o semaphore_info: Specifies a pointer to an SemaphoreInfo structure. +% +*/ +MagickExport void ActivateSemaphoreInfo(SemaphoreInfo **semaphore_info) +{ + assert(semaphore_info != (SemaphoreInfo **) NULL); + if (*semaphore_info == (SemaphoreInfo *) NULL) + { + InitializeMagickMutex(); + LockMagickMutex(); + if (*semaphore_info == (SemaphoreInfo *) NULL) + *semaphore_info=AllocateSemaphoreInfo(); + UnlockMagickMutex(); + } +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % % L o c k S e m a p h o r e I n f o % % % % % diff --git a/MagickCore/semaphore.h b/MagickCore/semaphore.h index 80e5ee0bb..dcb047f04 100644 --- a/MagickCore/semaphore.h +++ b/MagickCore/semaphore.h @@ -29,6 +29,7 @@ extern MagickExport SemaphoreInfo *AcquireSemaphoreInfo(void); extern MagickExport void + ActivateSemaphoreInfo(SemaphoreInfo **), LockSemaphoreInfo(SemaphoreInfo *), RelinquishSemaphoreInfo(SemaphoreInfo **), UnlockSemaphoreInfo(SemaphoreInfo *); diff --git a/MagickCore/type.c b/MagickCore/type.c index 6d4879104..22bf854ac 100644 --- a/MagickCore/type.c +++ b/MagickCore/type.c @@ -786,7 +786,7 @@ static MagickBooleanType InitializeTypeList(ExceptionInfo *exception) (instantiate_type == MagickFalse)) { if (type_semaphore == (SemaphoreInfo *) NULL) - type_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&type_semaphore); LockSemaphoreInfo(type_semaphore); if ((type_list == (SplayTreeInfo *) NULL) && (instantiate_type == MagickFalse)) @@ -1390,7 +1390,7 @@ MagickPrivate MagickBooleanType TypeComponentGenesis(void) MagickPrivate void TypeComponentTerminus(void) { if (type_semaphore == (SemaphoreInfo *) NULL) - type_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&type_semaphore); LockSemaphoreInfo(type_semaphore); if (type_list != (SplayTreeInfo *) NULL) type_list=DestroySplayTree(type_list); diff --git a/MagickWand/wand.c b/MagickWand/wand.c index 560e017c6..065054ad5 100644 --- a/MagickWand/wand.c +++ b/MagickWand/wand.c @@ -77,7 +77,7 @@ WandExport size_t AcquireWandId(void) id = 0; if (wand_semaphore == (SemaphoreInfo *) NULL) - wand_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&wand_semaphore); LockSemaphoreInfo(wand_semaphore); if ((wand_ids == (SplayTreeInfo *) NULL) && IsMagickFalse(instantiate_wand)) { @@ -114,7 +114,7 @@ WandExport size_t AcquireWandId(void) WandExport void DestroyWandIds(void) { if (wand_semaphore == (SemaphoreInfo *) NULL) - wand_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&wand_semaphore); LockSemaphoreInfo(wand_semaphore); if (wand_ids != (SplayTreeInfo *) NULL) wand_ids=DestroySplayTree(wand_ids); diff --git a/coders/tiff.c b/coders/tiff.c index 8a771e852..d443b3fa1 100644 --- a/coders/tiff.c +++ b/coders/tiff.c @@ -1873,7 +1873,7 @@ ModuleExport size_t RegisterTIFFImage(void) *entry; if (tiff_semaphore == (SemaphoreInfo *) NULL) - tiff_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&tiff_semaphore); LockSemaphoreInfo(tiff_semaphore); if (instantiate_key == MagickFalse) { @@ -2006,7 +2006,7 @@ ModuleExport void UnregisterTIFFImage(void) (void) UnregisterMagickInfo("TIF"); (void) UnregisterMagickInfo("PTIF"); if (tiff_semaphore == (SemaphoreInfo *) NULL) - tiff_semaphore=AcquireSemaphoreInfo(); + ActivateSemaphoreInfo(&tiff_semaphore); LockSemaphoreInfo(tiff_semaphore); if (instantiate_key != MagickFalse) {