From: cristy Date: Sun, 6 Jan 2013 18:07:11 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~4484 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3e1fa37018aa701f553bf22824051f930ce4aef7;p=imagemagick --- diff --git a/MagickCore/shear.c b/MagickCore/shear.c index 156e6b438..271f1f917 100644 --- a/MagickCore/shear.c +++ b/MagickCore/shear.c @@ -1028,7 +1028,7 @@ MagickExport Image *IntegralRotateImage(const Image *image,size_t rotations, tile_width=image->columns; #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) \ - magick_threads(image,image,image->rows/tile_height,1) + magick_threads(image,image,1,1) #endif for (tile_y=0; tile_y < (ssize_t) image->rows; tile_y+=(ssize_t) tile_height) { @@ -1154,6 +1154,26 @@ MagickExport Image *IntegralRotateImage(const Image *image,size_t rotations, #if defined(MAGICKCORE_OPENMP_SUPPORT) #pragma omp parallel for schedule(static,4) \ magick_threads(image,image,1,1) +#endif + for (tile_y=0; tile_y < (ssize_t) image->rows; tile_y+=(ssize_t) tile_height) + { + register ssize_t + tile_x; + + if (status == MagickFalse) + continue; + tile_x=0; + for ( ; tile_x < (ssize_t) image->columns; tile_x+=(ssize_t) tile_width) + { + MagickBooleanType + sync; + + register const Quantum + *restrict p; + + register Quantum + *restrict q; + #endif for (y=0; y < (ssize_t) image->rows; y++) { diff --git a/MagickCore/thread-private.h b/MagickCore/thread-private.h index 456ed0f93..90b658083 100644 --- a/MagickCore/thread-private.h +++ b/MagickCore/thread-private.h @@ -29,13 +29,13 @@ extern "C" { /* Single threaded unless workload justifies the threading overhead. */ -#define WorkloadThreshold() (16*GetMagickResourceLimit(ThreadResource)) #define magick_threads(source,destination,chunk,expression) \ - num_threads((expression) == 0 ? 1 : ((chunk) > WorkloadThreshold()) && \ - (GetImagePixelCacheType(source) != DiskCache) && \ + num_threads((expression) == 0 ? 1 : \ + ((chunk) > (16*GetMagickResourceLimit(ThreadResource))) && \ + (GetImagePixelCacheType(source) != DiskCache) && \ (GetImagePixelCacheType(destination) != DiskCache) ? \ - GetMagickResourceLimit(ThreadResource) : \ - GetMagickResourceLimit(ThreadResource) < 2 ? 1 : 2) + GetMagickResourceLimit(ThreadResource) : \ + GetMagickResourceLimit(ThreadResource) < 2 ? 1 : 2) #if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 10)) #define MagickCachePrefetch(address,mode,locality) \