From: cristy Date: Mon, 12 Apr 2010 14:43:14 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~9661 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=73724518eba82e39dcffd03f699458c944c2a686;p=imagemagick --- diff --git a/magick/cache-private.h b/magick/cache-private.h index be587ec60..dfa8cc9e5 100644 --- a/magick/cache-private.h +++ b/magick/cache-private.h @@ -32,7 +32,8 @@ typedef enum UndefinedCache, MemoryCache, MapCache, - DiskCache + DiskCache, + PingCache } CacheType; typedef void diff --git a/magick/cache.c b/magick/cache.c index f4b760273..4f39ee155 100644 --- a/magick/cache.c +++ b/magick/cache.c @@ -1808,6 +1808,8 @@ static inline MagickBooleanType IsNexusInCore(const CacheInfo *cache_info, MagickOffsetType offset; + if (cache_info->type == PingCache) + return(MagickTrue); offset=(MagickOffsetType) nexus_info->region.y*cache_info->columns+ nexus_info->region.x; if (nexus_info->pixels != (cache_info->pixels+offset)) @@ -4081,6 +4083,16 @@ static MagickBooleanType OpenPixelCache(Image *image,const MapMode mode, cache_info->columns=image->columns; cache_info->active_index_channel=((image->storage_class == PseudoClass) || (image->colorspace == CMYKColorspace)) ? MagickTrue : MagickFalse; + if (image->ping != MagickFalse) + { + cache_info->storage_class=image->storage_class; + cache_info->colorspace=image->colorspace; + cache_info->type=PingCache; + cache_info->pixels=(PixelPacket *) NULL; + cache_info->indexes=(IndexPacket *) NULL; + cache_info->length=0; + return(MagickTrue); + } number_pixels=(MagickSizeType) cache_info->columns*cache_info->rows; packet_size=sizeof(PixelPacket); if (cache_info->active_index_channel != MagickFalse) @@ -5036,8 +5048,8 @@ static PixelPacket *SetPixelCacheNexusPixels(const Image *image, if (cache_info->type == UndefinedCache) return((PixelPacket *) NULL); nexus_info->region=(*region); - if ((cache_info->type != DiskCache) && (image->clip_mask == (Image *) NULL) && - (image->mask == (Image *) NULL)) + if ((cache_info->type != DiskCache) && (cache_info->type != PingCache) && + (image->clip_mask == (Image *) NULL) && (image->mask == (Image *) NULL)) { long x, diff --git a/magick/image.c b/magick/image.c index 616cc12d5..33d377744 100644 --- a/magick/image.c +++ b/magick/image.c @@ -180,6 +180,7 @@ MagickExport Image *AcquireImage(const ImageInfo *image_info) image->y_resolution=DefaultResolution; image->units=PixelsPerInchResolution; GetTimerInfo(&image->timer); + image->ping=MagickFalse; image->cache=AcquirePixelCache(0); image->blob=CloneBlobInfo((BlobInfo *) NULL); image->debug=IsEventLogging(); @@ -252,6 +253,7 @@ MagickExport Image *AcquireImage(const ImageInfo *image_info) image->border_color=image_info->border_color; image->matte_color=image_info->matte_color; image->transparent_color=image_info->transparent_color; + image->ping=image_info->ping; image->progress_monitor=image_info->progress_monitor; image->client_data=image_info->client_data; if (image_info->cache != (void *) NULL) @@ -344,8 +346,7 @@ MagickExport MagickBooleanType AcquireImageColormap(Image *image, image->colormap[i].blue=(Quantum) pixel; image->colormap[i].opacity=OpaqueOpacity; } - image->storage_class=PseudoClass; - return(MagickTrue); + return(SetImageStorageClass(image,PseudoClass)); } /* @@ -874,6 +875,7 @@ MagickExport Image *CloneImage(const Image *image,const unsigned long columns, clone_image->blob=ReferenceBlob(image->blob); else clone_image->blob=CloneBlobInfo((BlobInfo *) NULL); + clone_image->ping=image->ping; clone_image->debug=IsEventLogging(); clone_image->semaphore=AllocateSemaphoreInfo(); if ((columns == 0) && (rows == 0)) diff --git a/magick/image.h b/magick/image.h index ef370ce68..d557b28be 100644 --- a/magick/image.h +++ b/magick/image.h @@ -333,6 +333,9 @@ struct _Image MagickSizeType extent; + + MagickBooleanType + ping; }; struct _ImageInfo