ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
cache_info->semaphore=AllocateSemaphoreInfo();
cache_info->reference_count=1;
- cache_info->file_semaphore=AllocateSemaphoreInfo();
+ cache_info->disk_semaphore=AllocateSemaphoreInfo();
cache_info->debug=IsEventLogging();
cache_info->signature=MagickSignature;
return((Cache ) cache_info);
status;
status=(-1);
- LockSemaphoreInfo(cache_info->file_semaphore);
+ LockSemaphoreInfo(cache_info->disk_semaphore);
if (cache_info->file != -1)
{
status=close(cache_info->file);
cache_info->file=(-1);
RelinquishMagickResource(FileResource,1);
}
- UnlockSemaphoreInfo(cache_info->file_semaphore);
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
return(status == -1 ? MagickFalse : MagickTrue);
}
/*
Open pixel cache on disk.
*/
- LockSemaphoreInfo(cache_info->file_semaphore);
+ LockSemaphoreInfo(cache_info->disk_semaphore);
if (cache_info->file != -1)
{
- UnlockSemaphoreInfo(cache_info->file_semaphore);
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
return(MagickTrue); /* cache already open */
}
if (*cache_info->cache_filename == '\0')
}
if (file == -1)
{
- UnlockSemaphoreInfo(cache_info->file_semaphore);
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
return(MagickFalse);
}
(void) AcquireMagickResource(FileResource,1);
cache_info->file=file;
cache_info->mode=mode;
- UnlockSemaphoreInfo(cache_info->file_semaphore);
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
return(MagickTrue);
}
count;
#if !defined(MAGICKCORE_HAVE_PREAD)
+ LockSemaphoreInfo(cache_info->disk_semaphore);
if (lseek(cache_info->file,offset,SEEK_SET) < 0)
- return((MagickOffsetType) -1);
+ {
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
+ return((MagickOffsetType) -1);
+ }
#endif
count=0;
for (i=0; i < (MagickOffsetType) length; i+=count)
break;
}
}
+#if !defined(MAGICKCORE_HAVE_PREAD)
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
+#endif
return(i);
}
count;
#if !defined(MAGICKCORE_HAVE_PWRITE)
+ LockSemaphoreInfo(cache_info->disk_semaphore);
if (lseek(cache_info->file,offset,SEEK_SET) < 0)
- return((MagickOffsetType) -1);
+ {
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
+ return((MagickOffsetType) -1);
+ }
#endif
count=0;
for (i=0; i < (MagickOffsetType) length; i+=count)
break;
}
}
+#if !defined(MAGICKCORE_HAVE_PWRITE)
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
+#endif
return(i);
}
cache_info->number_threads);
if (cache_info->random_info != (RandomInfo *) NULL)
cache_info->random_info=DestroyRandomInfo(cache_info->random_info);
- if (cache_info->file_semaphore != (SemaphoreInfo *) NULL)
- DestroySemaphoreInfo(&cache_info->file_semaphore);
+ if (cache_info->disk_semaphore != (SemaphoreInfo *) NULL)
+ DestroySemaphoreInfo(&cache_info->disk_semaphore);
if (cache_info->semaphore != (SemaphoreInfo *) NULL)
DestroySemaphoreInfo(&cache_info->semaphore);
cache_info->signature=(~MagickSignature);
/*
Read meta content from disk.
*/
- LockSemaphoreInfo(cache_info->file_semaphore);
if (OpenPixelCacheOnDisk(cache_info,IOMode) == MagickFalse)
{
ThrowFileException(exception,FileOpenError,"UnableToOpenFile",
cache_info->cache_filename);
- UnlockSemaphoreInfo(cache_info->file_semaphore);
return(MagickFalse);
}
if ((cache_info->columns == nexus_info->region.width) &&
}
if (IsFileDescriptorLimitExceeded() != MagickFalse)
(void) ClosePixelCacheOnDisk(cache_info);
- UnlockSemaphoreInfo(cache_info->file_semaphore);
if (y < (ssize_t) rows)
{
ThrowFileException(exception,CacheError,"UnableToReadPixelCache",
/*
Read pixels from disk.
*/
- LockSemaphoreInfo(cache_info->file_semaphore);
if (OpenPixelCacheOnDisk(cache_info,IOMode) == MagickFalse)
{
ThrowFileException(exception,FileOpenError,"UnableToOpenFile",
cache_info->cache_filename);
- UnlockSemaphoreInfo(cache_info->file_semaphore);
return(MagickFalse);
}
if ((cache_info->columns == nexus_info->region.width) &&
}
if (IsFileDescriptorLimitExceeded() != MagickFalse)
(void) ClosePixelCacheOnDisk(cache_info);
- UnlockSemaphoreInfo(cache_info->file_semaphore);
if (y < (ssize_t) rows)
{
ThrowFileException(exception,CacheError,"UnableToReadPixelCache",
/*
Write associated pixels to disk.
*/
- LockSemaphoreInfo(cache_info->file_semaphore);
if (OpenPixelCacheOnDisk(cache_info,IOMode) == MagickFalse)
{
ThrowFileException(exception,FileOpenError,"UnableToOpenFile",
cache_info->cache_filename);
- UnlockSemaphoreInfo(cache_info->file_semaphore);
return(MagickFalse);
}
if ((cache_info->columns == nexus_info->region.width) &&
}
if (IsFileDescriptorLimitExceeded() != MagickFalse)
(void) ClosePixelCacheOnDisk(cache_info);
- UnlockSemaphoreInfo(cache_info->file_semaphore);
if (y < (ssize_t) rows)
{
ThrowFileException(exception,CacheError,"UnableToWritePixelCache",
/*
Write pixels to disk.
*/
- LockSemaphoreInfo(cache_info->file_semaphore);
if (OpenPixelCacheOnDisk(cache_info,IOMode) == MagickFalse)
{
ThrowFileException(exception,FileOpenError,"UnableToOpenFile",
cache_info->cache_filename);
- UnlockSemaphoreInfo(cache_info->file_semaphore);
return(MagickFalse);
}
if ((cache_info->columns == nexus_info->region.width) &&
}
if (IsFileDescriptorLimitExceeded() != MagickFalse)
(void) ClosePixelCacheOnDisk(cache_info);
- UnlockSemaphoreInfo(cache_info->file_semaphore);
if (y < (ssize_t) rows)
{
ThrowFileException(exception,CacheError,"UnableToWritePixelCache",