From 2036f5c873142958621c64f2b77424b252edf83d Mon Sep 17 00:00:00 2001 From: cristy Date: Sun, 19 Sep 2010 21:18:17 +0000 Subject: [PATCH] --- magick/cache.c | 89 ++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 75 insertions(+), 14 deletions(-) diff --git a/magick/cache.c b/magick/cache.c index 670bb1ea4..c628b9f27 100644 --- a/magick/cache.c +++ b/magick/cache.c @@ -445,7 +445,7 @@ static MagickBooleanType ClipPixelCacheNexus(Image *image, p=GetAuthenticPixelCacheNexus(image,nexus_info->region.x,nexus_info->region.y, nexus_info->region.width,nexus_info->region.height,image_nexus[0], exception); - indexes=GetPixelCacheNexusIndexes(image->cache,image_nexus[0]); + indexes=GetPixelCacheNexusIndexes(cache_info,image_nexus[0]); q=nexus_info->pixels; nexus_indexes=nexus_info->indexes; r=GetVirtualPixelsFromNexus(image->clip_mask,MaskVirtualPixelMethod, @@ -1412,7 +1412,7 @@ MagickExport void DestroyImagePixels(Image *image) cache_info->methods.destroy_pixel_handler(image); return; } - DestroyImagePixelCache(image); + image->cache=DestroyPixelCache(image->cache); } /* @@ -1651,6 +1651,9 @@ MagickExport IndexPacket *GetAuthenticIndexQueue(const Image *image) CacheInfo *cache_info; + const int + id = GetOpenMPThreadId(); + assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); assert(image->cache != (Cache) NULL); @@ -1659,7 +1662,8 @@ MagickExport IndexPacket *GetAuthenticIndexQueue(const Image *image) if (cache_info->methods.get_authentic_indexes_from_handler != (GetAuthenticIndexesFromHandler) NULL) return(cache_info->methods.get_authentic_indexes_from_handler(image)); - return(GetAuthenticIndexesFromCache(image)); + assert(id < (int) cache_info->number_threads); + return(GetPixelCacheNexusIndexes(cache_info,cache_info->nexus_info[id])); } /* @@ -1806,6 +1810,9 @@ MagickExport PixelPacket *GetAuthenticPixelQueue(const Image *image) CacheInfo *cache_info; + const int + id = GetOpenMPThreadId(); + assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); assert(image->cache != (Cache) NULL); @@ -1814,7 +1821,8 @@ MagickExport PixelPacket *GetAuthenticPixelQueue(const Image *image) if (cache_info->methods.get_authentic_pixels_from_handler != (GetAuthenticPixelsFromHandler) NULL) return(cache_info->methods.get_authentic_pixels_from_handler(image)); - return(GetAuthenticPixelsFromCache(image)); + assert(id < (int) cache_info->number_threads); + return(GetPixelCacheNexusPixels(cache_info,cache_info->nexus_info[id])); } /* @@ -1870,6 +1878,9 @@ MagickExport PixelPacket *GetAuthenticPixels(Image *image,const ssize_t x, CacheInfo *cache_info; + const int + id = GetOpenMPThreadId(); + assert(image != (Image *) NULL); assert(image->signature == MagickSignature); assert(image->cache != (Cache) NULL); @@ -1880,6 +1891,9 @@ MagickExport PixelPacket *GetAuthenticPixels(Image *image,const ssize_t x, return(cache_info->methods.get_authentic_pixels_handler(image,x,y,columns, rows,exception)); return(GetAuthenticPixelsCache(image,x,y,columns,rows,exception)); + assert(id < (int) cache_info->number_threads); + return(GetAuthenticPixelCacheNexus(image,x,y,columns,rows, + cache_info->nexus_info[id],exception)); } /* @@ -1970,7 +1984,7 @@ MagickExport MagickSizeType GetImageExtent(const Image *image) cache_info=(CacheInfo *) image->cache; assert(cache_info->signature == MagickSignature); assert(id < (int) cache_info->number_threads); - return(GetPixelCacheNexusExtent(image->cache,cache_info->nexus_info[id])); + return(GetPixelCacheNexusExtent(cache_info,cache_info->nexus_info[id])); } /* @@ -2165,6 +2179,9 @@ MagickExport MagickBooleanType GetOneAuthenticPixel(Image *image, CacheInfo *cache_info; + PixelPacket + *pixels; + assert(image != (Image *) NULL); assert(image->signature == MagickSignature); assert(image->cache != (Cache) NULL); @@ -2175,7 +2192,12 @@ MagickExport MagickBooleanType GetOneAuthenticPixel(Image *image, (GetOneAuthenticPixelFromHandler) NULL) return(cache_info->methods.get_one_authentic_pixel_from_handler(image,x,y, pixel,exception)); - return(GetOneAuthenticPixelFromCache(image,x,y,pixel,exception)); + *pixel=image->background_color; + pixels=GetAuthenticPixelsCache(image,x,y,1UL,1UL,exception); + if (pixels == (PixelPacket *) NULL) + return(MagickFalse); + *pixel=(*pixels); + return(MagickTrue); } /* @@ -2325,6 +2347,9 @@ MagickExport MagickBooleanType GetOneVirtualMethodPixel(const Image *image, CacheInfo *cache_info; + const PixelPacket + *pixels; + assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); assert(image->cache != (Cache) NULL); @@ -2335,8 +2360,12 @@ MagickExport MagickBooleanType GetOneVirtualMethodPixel(const Image *image, (GetOneVirtualPixelFromHandler) NULL) return(cache_info->methods.get_one_virtual_pixel_from_handler(image, virtual_pixel_method,x,y,pixel,exception)); - return(GetOneVirtualPixelFromCache(image,virtual_pixel_method,x,y,pixel, - exception)); + *pixel=image->background_color; + pixels=GetVirtualPixelCache(image,virtual_pixel_method,x,y,1UL,1UL,exception); + if (pixels == (const PixelPacket *) NULL) + return(MagickFalse); + *pixel=(*pixels); + return(MagickTrue); } /* @@ -2376,6 +2405,9 @@ MagickExport MagickBooleanType GetOneVirtualPixel(const Image *image, CacheInfo *cache_info; + const PixelPacket + *pixels; + assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); assert(image->cache != (Cache) NULL); @@ -2388,6 +2420,13 @@ MagickExport MagickBooleanType GetOneVirtualPixel(const Image *image, GetPixelCacheVirtualMethod(image),x,y,pixel,exception)); return(GetOneVirtualPixelFromCache(image,GetPixelCacheVirtualMethod(image), x,y,pixel,exception)); + *pixel=image->background_color; + pixels=GetVirtualPixelCache(image,GetPixelCacheVirtualMethod(image),x,y, + 1UL,1UL,exception); + if (pixels == (const PixelPacket *) NULL) + return(MagickFalse); + *pixel=(*pixels); + return(MagickTrue); } /* @@ -2949,6 +2988,9 @@ MagickExport const IndexPacket *GetVirtualIndexQueue(const Image *image) CacheInfo *cache_info; + const int + id = GetOpenMPThreadId(); + assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); assert(image->cache != (Cache) NULL); @@ -2957,7 +2999,8 @@ MagickExport const IndexPacket *GetVirtualIndexQueue(const Image *image) if (cache_info->methods.get_virtual_indexes_from_handler != (GetVirtualIndexesFromHandler) NULL) return(cache_info->methods.get_virtual_indexes_from_handler(image)); - return(GetVirtualIndexesFromCache(image)); + assert(id < (int) cache_info->number_threads); + return(GetVirtualIndexesFromNexus(cache_info,cache_info->nexus_info[id])); } /* @@ -3495,6 +3538,9 @@ MagickExport const PixelPacket *GetVirtualPixelQueue(const Image *image) CacheInfo *cache_info; + const int + id = GetOpenMPThreadId(); + assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); assert(image->cache != (Cache) NULL); @@ -3503,7 +3549,8 @@ MagickExport const PixelPacket *GetVirtualPixelQueue(const Image *image) if (cache_info->methods.get_virtual_pixels_handler != (GetVirtualPixelsHandler) NULL) return(cache_info->methods.get_virtual_pixels_handler(image)); - return(GetVirtualPixelsCache(image)); + assert(id < (int) cache_info->number_threads); + return(GetVirtualPixelsNexus(cache_info,cache_info->nexus_info[id])); } /* @@ -3561,6 +3608,9 @@ MagickExport const PixelPacket *GetVirtualPixels(const Image *image, CacheInfo *cache_info; + const int + id = GetOpenMPThreadId(); + assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); assert(image->cache != (Cache) NULL); @@ -3570,8 +3620,9 @@ MagickExport const PixelPacket *GetVirtualPixels(const Image *image, (GetVirtualPixelHandler) NULL) return(cache_info->methods.get_virtual_pixel_handler(image, GetPixelCacheVirtualMethod(image),x,y,columns,rows,exception)); - return(GetVirtualPixelCache(image,GetPixelCacheVirtualMethod(image),x,y, - columns,rows,exception)); + assert(id < (int) cache_info->number_threads); + return(GetVirtualPixelsFromNexus(image,GetPixelCacheVirtualMethod(image),x,y, + columns,rows,cache_info->nexus_info[id],exception)); } /* @@ -4398,6 +4449,9 @@ MagickExport PixelPacket *QueueAuthenticPixels(Image *image,const ssize_t x, CacheInfo *cache_info; + const int + id = GetOpenMPThreadId(); + assert(image != (Image *) NULL); assert(image->signature == MagickSignature); assert(image->cache != (Cache) NULL); @@ -4407,7 +4461,9 @@ MagickExport PixelPacket *QueueAuthenticPixels(Image *image,const ssize_t x, (QueueAuthenticPixelsHandler) NULL) return(cache_info->methods.queue_authentic_pixels_handler(image,x,y,columns, rows,exception)); - return(QueueAuthenticPixelsCache(image,x,y,columns,rows,exception)); + assert(id < (int) cache_info->number_threads); + return(QueueAuthenticNexus(image,x,y,columns,rows,cache_info->nexus_info[id], + exception)); } /* @@ -5124,6 +5180,9 @@ MagickExport MagickBooleanType SyncAuthenticPixels(Image *image, CacheInfo *cache_info; + const int + id = GetOpenMPThreadId(); + assert(image != (Image *) NULL); assert(image->signature == MagickSignature); assert(image->cache != (Cache) NULL); @@ -5132,7 +5191,9 @@ MagickExport MagickBooleanType SyncAuthenticPixels(Image *image, if (cache_info->methods.sync_authentic_pixels_handler != (SyncAuthenticPixelsHandler) NULL) return(cache_info->methods.sync_authentic_pixels_handler(image,exception)); - return(SyncAuthenticPixelsCache(image,exception)); + assert(id < (int) cache_info->number_threads); + return(SyncAuthenticPixelCacheNexus(image,cache_info->nexus_info[id], + exception)); } /* -- 2.40.0