MagickPrivate void AnnotateComponentTerminus(void)
{
if (annotate_semaphore == (SemaphoreInfo *) NULL)
- annotate_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&annotate_semaphore);
RelinquishSemaphoreInfo(&annotate_semaphore);
}
\f
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);
MagickPrivate void CacheComponentTerminus(void)
{
if (cache_semaphore == (SemaphoreInfo *) NULL)
- cache_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&cache_semaphore);
LockSemaphoreInfo(cache_semaphore);
instantiate_cache=MagickFalse;
UnlockSemaphoreInfo(cache_semaphore);
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);
(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))
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);
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))
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);
(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))
MagickPrivate void ConstituteComponentTerminus(void)
{
if (constitute_semaphore == (SemaphoreInfo *) NULL)
- constitute_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&constitute_semaphore);
RelinquishSemaphoreInfo(&constitute_semaphore);
}
\f
}
image=NewImageList();
if (constitute_semaphore == (SemaphoreInfo *) NULL)
- constitute_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&constitute_semaphore);
if ((magick_info == (const MagickInfo *) NULL) ||
(GetImageDecoder(magick_info) == (DecodeImageHandler *) NULL))
{
}
}
if (constitute_semaphore == (SemaphoreInfo *) NULL)
- constitute_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&constitute_semaphore);
if ((magick_info != (const MagickInfo *) NULL) &&
(GetImageEncoder(magick_info) != (EncodeImageHandler *) NULL))
{
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);
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))
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)
(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))
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);
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))
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);
(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))
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);
(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))
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);
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);
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++)
(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))
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);
(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))
MagickPrivate void ModuleComponentTerminus(void)
{
if (module_semaphore == (SemaphoreInfo *) NULL)
- module_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&module_semaphore);
DestroyModuleList();
RelinquishSemaphoreInfo(&module_semaphore);
}
if (clEnv != NULL)
{
memset(clEnv, 0, sizeof(struct _MagickCLEnv));
- clEnv->lock=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&clEnv->lock);
}
return clEnv;
}
{
if (defaultCLEnvLock == NULL)
{
- defaultCLEnvLock=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&defaultCLEnvLock);
}
LockSemaphoreInfo(defaultCLEnvLock);
defaultCLEnv = AcquireMagickOpenCLEnv();
static void LockDefaultOpenCLEnv() {
if (defaultCLEnvLock == NULL)
{
- defaultCLEnvLock=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&defaultCLEnvLock);
}
LockSemaphoreInfo(defaultCLEnvLock);
}
static void UnlockDefaultOpenCLEnv() {
if (defaultCLEnvLock == NULL)
{
- defaultCLEnvLock=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&defaultCLEnvLock);
}
else
UnlockSemaphoreInfo(defaultCLEnvLock);
if (openclCachedFilesDirectory == NULL) {
if (openclCachedFilesDirectoryLock == NULL)
{
- openclCachedFilesDirectoryLock=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&openclCachedFilesDirectoryLock);
}
LockSemaphoreInfo(openclCachedFilesDirectoryLock);
if (openclCachedFilesDirectory == NULL) {
(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))
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);
MagickPrivate void RandomComponentTerminus(void)
{
if (random_semaphore == (SemaphoreInfo *) NULL)
- random_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&random_semaphore);
RelinquishSemaphoreInfo(&random_semaphore);
}
\f
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(),"...");
(instantiate_registry == MagickFalse))
{
if (registry_semaphore == (SemaphoreInfo *) NULL)
- registry_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(®istry_semaphore);
LockSemaphoreInfo(registry_semaphore);
if ((registry == (SplayTreeInfo *) NULL) &&
(instantiate_registry == MagickFalse))
status=MagickFalse;
(void) FormatMagickSize(size,MagickFalse,resource_request);
if (resource_semaphore == (SemaphoreInfo *) NULL)
- resource_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&resource_semaphore);
LockSemaphoreInfo(resource_semaphore);
switch (type)
{
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,
resource=0;
if (resource_semaphore == (SemaphoreInfo *) NULL)
- resource_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&resource_semaphore);
LockSemaphoreInfo(resource_semaphore);
switch (type)
{
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);
(void) FormatMagickSize(size,MagickFalse,resource_request);
if (resource_semaphore == (SemaphoreInfo *) NULL)
- resource_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&resource_semaphore);
LockSemaphoreInfo(resource_semaphore);
switch (type)
{
% %
% %
% %
+% 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();
+ }
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
% L o c k S e m a p h o r e I n f o %
% %
% %
*AcquireSemaphoreInfo(void);
extern MagickExport void
+ ActivateSemaphoreInfo(SemaphoreInfo **),
LockSemaphoreInfo(SemaphoreInfo *),
RelinquishSemaphoreInfo(SemaphoreInfo **),
UnlockSemaphoreInfo(SemaphoreInfo *);
(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))
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);
id = 0;
if (wand_semaphore == (SemaphoreInfo *) NULL)
- wand_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&wand_semaphore);
LockSemaphoreInfo(wand_semaphore);
if ((wand_ids == (SplayTreeInfo *) NULL) && IsMagickFalse(instantiate_wand))
{
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);
*entry;
if (tiff_semaphore == (SemaphoreInfo *) NULL)
- tiff_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&tiff_semaphore);
LockSemaphoreInfo(tiff_semaphore);
if (instantiate_key == MagickFalse)
{
(void) UnregisterMagickInfo("TIF");
(void) UnregisterMagickInfo("PTIF");
if (tiff_semaphore == (SemaphoreInfo *) NULL)
- tiff_semaphore=AcquireSemaphoreInfo();
+ ActivateSemaphoreInfo(&tiff_semaphore);
LockSemaphoreInfo(tiff_semaphore);
if (instantiate_key != MagickFalse)
{