From abd6e377d015cb42f4a20da86609bf3642f3c8a2 Mon Sep 17 00:00:00 2001 From: cristy Date: Wed, 15 Sep 2010 19:11:26 +0000 Subject: [PATCH] --- magick/cache.c | 148 +++++++++++-------------------------------------- 1 file changed, 32 insertions(+), 116 deletions(-) diff --git a/magick/cache.c b/magick/cache.c index 1337847fd..d63b8844d 100644 --- a/magick/cache.c +++ b/magick/cache.c @@ -526,106 +526,6 @@ MagickExport Cache ClonePixelCache(const Cache cache) % % % % % % -+ C l o n e P i x e l C a c h e N e x u s % -% % -% % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% ClonePixelCacheNexus() clones the source cache nexus to the destination -% nexus. -% -% The format of the ClonePixelCacheNexus() method is: -% -% MagickBooleanType ClonePixelCacheNexus(CacheInfo *destination, -% CacheInfo *source,ExceptionInfo *exception) -% -% A description of each parameter follows: -% -% o destination: the destination cache nexus. -% -% o source: the source cache nexus. -% -% o exception: return any errors or warnings in this structure. -% -*/ - -static inline MagickBooleanType AcquireCacheNexusPixels(CacheInfo *cache_info, - NexusInfo *nexus_info,ExceptionInfo *exception) -{ - if (nexus_info->length != (MagickSizeType) ((size_t) nexus_info->length)) - return(MagickFalse); - nexus_info->mapped=MagickFalse; - nexus_info->cache=(PixelPacket *) AcquireMagickMemory((size_t) - nexus_info->length); - if (nexus_info->cache == (PixelPacket *) NULL) - { - nexus_info->mapped=MagickTrue; - nexus_info->cache=(PixelPacket *) MapBlob(-1,IOMode,0,(size_t) - nexus_info->length); - } - if (nexus_info->cache == (PixelPacket *) NULL) - { - (void) ThrowMagickException(exception,GetMagickModule(), - ResourceLimitError,"MemoryAllocationFailed","`%s'", - cache_info->filename); - return(MagickFalse); - } - return(MagickTrue); -} - -static MagickBooleanType ClonePixelCacheNexus(CacheInfo *destination, - CacheInfo *source,ExceptionInfo *exception) -{ - MagickBooleanType - status; - - register ssize_t - i; - - status=MagickTrue; - for (i=0; i < (ssize_t) source->number_threads; i++) - { - register const NexusInfo - *p; - - register NexusInfo - *q; - - p=source->nexus_info[i]; - q=destination->nexus_info[i]; - q->region=p->region; - q->mapped=MagickFalse; - q->cache=(PixelPacket *) NULL; - q->pixels=(PixelPacket *) NULL; - q->indexes=(IndexPacket *) NULL; - q->length=0; - if (p->cache != (PixelPacket *) NULL) - { - status=AcquireCacheNexusPixels(source,q,exception); - if (status != MagickFalse) - { - MagickSizeType - number_pixels; - - (void) CopyMagickMemory(q->cache,p->cache,(size_t) p->length); - q->pixels=q->cache; - q->indexes=(IndexPacket *) NULL; - number_pixels=(MagickSizeType) q->region.width*q->region.height; - if (p->indexes != (IndexPacket *) NULL) - q->indexes=(IndexPacket *) (q->pixels+number_pixels); - q->length=p->length; - } - } - } - return(status); -} - -/* -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% % -% % + C l o n e P i x e l C a c h e P i x e l s % % % % % @@ -2217,20 +2117,15 @@ static Cache GetImagePixelCache(Image *image,const MagickBooleanType clone, clone_image.reference_count=1; clone_image.cache=ClonePixelCache(cache_info); clone_info=(CacheInfo *) clone_image.cache; - status=ClonePixelCacheNexus(cache_info,clone_info,exception); + status=OpenPixelCache(&clone_image,IOMode,exception); if (status != MagickFalse) { - status=OpenPixelCache(&clone_image,IOMode,exception); + if (clone != MagickFalse) + status=ClonePixelCachePixels(clone_info,cache_info,exception); if (status != MagickFalse) { - if (clone != MagickFalse) - status=ClonePixelCachePixels(clone_info,cache_info, - exception); - if (status != MagickFalse) - { - destroy=MagickTrue; - image->cache=clone_image.cache; - } + destroy=MagickTrue; + image->cache=clone_image.cache; } } DestroySemaphoreInfo(&clone_image.semaphore); @@ -4360,13 +4255,9 @@ MagickExport MagickBooleanType PersistPixelCache(Image *image, cache_info->type=DiskCache; cache_info->offset=(*offset); cache_info=(CacheInfo *) image->cache; - status=ClonePixelCacheNexus(cache_info,clone_info,exception); + status=OpenPixelCache(image,IOMode,exception); if (status != MagickFalse) - { - status=OpenPixelCache(image,IOMode,exception); - if (status != MagickFalse) - status=ClonePixelCachePixels(cache_info,clone_info,&image->exception); - } + status=ClonePixelCachePixels(cache_info,clone_info,&image->exception); *offset+=cache_info->length+page_size-(cache_info->length % page_size); clone_info=(CacheInfo *) DestroyPixelCache(clone_info); return(status); @@ -5011,6 +4902,31 @@ MagickExport void SetPixelCacheMethods(Cache cache,CacheMethods *cache_methods) % o exception: return any errors or warnings in this structure. % */ + +static inline MagickBooleanType AcquireCacheNexusPixels(CacheInfo *cache_info, + NexusInfo *nexus_info,ExceptionInfo *exception) +{ + if (nexus_info->length != (MagickSizeType) ((size_t) nexus_info->length)) + return(MagickFalse); + nexus_info->mapped=MagickFalse; + nexus_info->cache=(PixelPacket *) AcquireMagickMemory((size_t) + nexus_info->length); + if (nexus_info->cache == (PixelPacket *) NULL) + { + nexus_info->mapped=MagickTrue; + nexus_info->cache=(PixelPacket *) MapBlob(-1,IOMode,0,(size_t) + nexus_info->length); + } + if (nexus_info->cache == (PixelPacket *) NULL) + { + (void) ThrowMagickException(exception,GetMagickModule(), + ResourceLimitError,"MemoryAllocationFailed","`%s'", + cache_info->filename); + return(MagickFalse); + } + return(MagickTrue); +} + static PixelPacket *SetPixelCacheNexusPixels(const Image *image, const RectangleInfo *region,NexusInfo *nexus_info,ExceptionInfo *exception) { -- 2.50.1