]> granicus.if.org Git - imagemagick/commitdiff
Optimize ResetImagePixels()
authorCristy <urban-warrior@imagemagick.org>
Sun, 18 Mar 2018 12:30:05 +0000 (08:30 -0400)
committerCristy <urban-warrior@imagemagick.org>
Sun, 18 Mar 2018 12:30:05 +0000 (08:30 -0400)
MagickCore/cache-private.h
MagickCore/cache.c
MagickCore/cache.h
MagickCore/image.c
coders/miff.c

index e7d66c79d827f8edd87ed4705f99cb5462adc00c..9891543f0dc667759a05b23018e64bdc6f7e3690 100644 (file)
@@ -245,7 +245,6 @@ extern MagickPrivate const Quantum
   *GetVirtualPixelsNexus(const Cache,NexusInfo *magick_restrict);
 
 extern MagickPrivate const void
-  *AcquirePixelCachePixels(const Image *,MagickSizeType *,ExceptionInfo *),
   *GetVirtualMetacontentFromNexus(const Cache,NexusInfo *magick_restrict);
 
 extern MagickPrivate MagickBooleanType
index 928607e54fafe17d33377fd60a9e85c9c7892989..cc1d5a6b54972ac91288e5c8af221d61f06db7be 100644 (file)
@@ -279,7 +279,7 @@ MagickPrivate NexusInfo **AcquirePixelCacheNexus(const size_t number_threads)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-+   A c q u i r e P i x e l C a c h e P i x e l s                             %
+%   A c q u i r e P i x e l C a c h e P i x e l s                             %
 %                                                                             %
 %                                                                             %
 %                                                                             %
@@ -290,8 +290,8 @@ MagickPrivate NexusInfo **AcquirePixelCacheNexus(const size_t number_threads)
 %
 %  The format of the AcquirePixelCachePixels() method is:
 %
-%      const void *AcquirePixelCachePixels(const Image *image,
-%        MagickSizeType *length,ExceptionInfo *exception)
+%      void *AcquirePixelCachePixels(const Image *image,size_t *length,
+%        ExceptionInfo *exception)
 %
 %  A description of each parameter follows:
 %
@@ -302,8 +302,8 @@ MagickPrivate NexusInfo **AcquirePixelCacheNexus(const size_t number_threads)
 %    o exception: return any errors or warnings in this structure.
 %
 */
-MagickPrivate const void *AcquirePixelCachePixels(const Image *image,
-  MagickSizeType *length,ExceptionInfo *exception)
+MagickExport void *AcquirePixelCachePixels(const Image *image,size_t *length,
+  ExceptionInfo *exception)
 {
   CacheInfo
     *magick_restrict cache_info;
@@ -317,9 +317,9 @@ MagickPrivate const void *AcquirePixelCachePixels(const Image *image,
   assert(cache_info->signature == MagickCoreSignature);
   *length=0;
   if ((cache_info->type != MemoryCache) && (cache_info->type != MapCache))
-    return((const void *) NULL);
-  *length=cache_info->length;
-  return((const void *) cache_info->pixels);
+    return((void *) NULL);
+  *length=(size_t) cache_info->length;
+  return(cache_info->pixels);
 }
 \f
 /*
index e73ea857fb19073f3bb3ef295e3e8a305abc19e3..ccb918aa4f3a9201926e691b873912331bca2b5e 100644 (file)
@@ -70,6 +70,7 @@ extern MagickExport Quantum
     const size_t,ExceptionInfo *) magick_hot_spot;
 
 extern MagickExport void
+  *AcquirePixelCachePixels(const Image *,size_t *,ExceptionInfo *),
   *GetAuthenticMetacontent(const Image *),
   *GetPixelCachePixels(Image *,MagickSizeType *,ExceptionInfo *);
 
index 1f4e6eaed58d52f6acd26989a8ff479fe54f6542..563042bf1dfdb6880f14725610881d8033d2cee4 100644 (file)
@@ -2230,13 +2230,25 @@ MagickExport MagickBooleanType ResetImagePixels(Image *image,
   MagickBooleanType
     status;
 
+  size_t
+    length;
+
   ssize_t
     y;
 
+  void
+    *pixels;
+
   assert(image != (Image *) NULL);
   if (image->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
   assert(image->signature == MagickCoreSignature);
+  pixels=AcquirePixelCachePixels(image,&length,exception);
+  if (pixels != (void *) NULL)
+    {   
+      (void) memset(pixels,0,length);
+      return(MagickTrue);
+    }
   /*
     Reset image pixels.
   */
index 5cabbfe557e86bc1c6cb66e3ce9d395bbf9d7ffb..8279452670c6ae6a5503e8e736bd8d8984f5ed57 100644 (file)
@@ -1271,7 +1271,9 @@ static Image *ReadMIFFImage(const ImageInfo *image_info,
     status=SetImageExtent(image,image->columns,image->rows,exception);
     if (status == MagickFalse)
       return(DestroyImageList(image));
-    (void) ResetImagePixels(image,exception);
+    status=ResetImagePixels(image,exception);
+    if (status == MagickFalse)
+      return(DestroyImageList(image));
     /*
       Allocate image pixels.
     */