From: cristy Date: Thu, 13 May 2010 01:27:43 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~9474 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7828daafc93b40d4dad979692ae13c0106821e7c;p=imagemagick --- diff --git a/Makefile.in b/Makefile.in index 8d571283e..9146d00f8 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1363,27 +1363,27 @@ am__magick_libMagickCore_la_SOURCES_DIST = magick/ImageMagick.h \ magick/resize.c magick/resize.h magick/resize-private.h \ magick/resource.c magick/resource_.h magick/segment.c \ magick/segment.h magick/semaphore.c magick/semaphore.h \ - magick/shear.c magick/shear.h magick/signature.c \ - magick/signature.h magick/signature-private.h \ - magick/splay-tree.c magick/splay-tree.h magick/static.c \ - magick/static.h magick/statistic.c magick/statistic.h \ - magick/stream.c magick/stream.h magick/stream-private.h \ - magick/string.c magick/string_.h magick/string-private.h \ - magick/studio.h magick/thread.c magick/thread_.h \ - magick/thread-private.h magick/timer.c magick/timer.h \ - magick/token.c magick/token.h magick/token-private.h \ - magick/transform.c magick/transform.h magick/threshold.c \ - magick/threshold.h magick/type.c magick/type.h \ - magick/utility.c magick/utility.h magick/version.c \ - magick/version.h magick/vms.h magick/widget.c magick/widget.h \ - magick/xml-tree.c magick/xml-tree.h magick/xwindow.c \ - magick/xwindow.h magick/nt-feature.c magick/nt-base.c \ - coders/art.c coders/avs.c coders/bmp.c coders/braille.c \ - coders/cals.c coders/caption.c coders/cin.c coders/cip.c \ - coders/clip.c coders/cmyk.c coders/cut.c coders/dcm.c \ - coders/dds.c coders/dib.c coders/dng.c coders/dot.c \ - coders/dpx.c coders/fax.c coders/fits.c coders/gif.c \ - coders/gradient.c coders/gray.c coders/hald.c \ + magick/semaphore-private.h magick/shear.c magick/shear.h \ + magick/signature.c magick/signature.h \ + magick/signature-private.h magick/splay-tree.c \ + magick/splay-tree.h magick/static.c magick/static.h \ + magick/statistic.c magick/statistic.h magick/stream.c \ + magick/stream.h magick/stream-private.h magick/string.c \ + magick/string_.h magick/string-private.h magick/studio.h \ + magick/thread.c magick/thread_.h magick/thread-private.h \ + magick/timer.c magick/timer.h magick/token.c magick/token.h \ + magick/token-private.h magick/transform.c magick/transform.h \ + magick/threshold.c magick/threshold.h magick/type.c \ + magick/type.h magick/utility.c magick/utility.h \ + magick/version.c magick/version.h magick/vms.h magick/widget.c \ + magick/widget.h magick/xml-tree.c magick/xml-tree.h \ + magick/xwindow.c magick/xwindow.h magick/nt-feature.c \ + magick/nt-base.c coders/art.c coders/avs.c coders/bmp.c \ + coders/braille.c coders/cals.c coders/caption.c coders/cin.c \ + coders/cip.c coders/clip.c coders/cmyk.c coders/cut.c \ + coders/dcm.c coders/dds.c coders/dib.c coders/dng.c \ + coders/dot.c coders/dpx.c coders/fax.c coders/fits.c \ + coders/gif.c coders/gradient.c coders/gray.c coders/hald.c \ coders/histogram.c coders/hrz.c coders/html.c coders/icon.c \ coders/info.c coders/inline.c coders/ipl.c coders/label.c \ coders/magick.c coders/map.c coders/mat.c coders/matte.c \ @@ -3874,6 +3874,7 @@ MAGICK_BASE_SRCS = \ magick/segment.h \ magick/semaphore.c \ magick/semaphore.h \ + magick/semaphore-private.h \ magick/shear.c \ magick/shear.h \ magick/signature.c \ @@ -4045,6 +4046,7 @@ MAGICK_NOINST_HDRS = \ magick/random-private.h \ magick/resample-private.h \ magick/resize-private.h \ + magick/semaphore-private.h \ magick/signature-private.h \ magick/static.h \ magick/stream-private.h \ diff --git a/PerlMagick/t/filter.t b/PerlMagick/t/filter.t index e3a2f46a1..29a6a3477 100644 --- a/PerlMagick/t/filter.t +++ b/PerlMagick/t/filter.t @@ -114,7 +114,7 @@ testFilterCompare('input.miff', q//, 'reference/filter/Magnify.miff', 'Magnify' testFilterCompare('input.miff', "fuzz=>$fuzz", 'reference/filter/MatteFloodfill.miff', 'MatteFloodfill', q/geometry=>"+25+45"/, 0.002, 0.02); ++$test; -testFilterCompare('input.miff', q//, 'reference/filter/MedianFilter.miff', 'MedianFilter', q//, 0.006, 0.6); +testFilterCompare('input.miff', q//, 'reference/filter/MedianFilter.miff', 'MedianFilter', q//, 0.5, 0.9); ++$test; testFilterCompare('input.miff', q//, 'reference/filter/Minify.miff', 'Minify', q//, 0.05, 0.5); @@ -150,7 +150,7 @@ testFilterCompare('input.miff', q//, 'reference/filter/RadialBlur.miff', 'Radia testFilterCompare('input.miff', q//, 'reference/filter/Raise.miff', 'Raise', q/'10x10'/, 0.002, 0.02); ++$test; -testFilterCompare('input.miff', q//, 'reference/filter/ReduceNoise.miff', 'ReduceNoise', q//, 0.006, 0.6); +testFilterCompare('input.miff', q//, 'reference/filter/ReduceNoise.miff', 'ReduceNoise', q//, 0.5, 0.9); ++$test; testFilterCompare('input.miff', q//, 'reference/filter/Resize.miff', 'Resize', q/'60%'/, 0.02, 1.02); diff --git a/config/configure.xml b/config/configure.xml index b18786c8c..ac603d4eb 100644 --- a/config/configure.xml +++ b/config/configure.xml @@ -9,7 +9,7 @@ - + diff --git a/magick/Makefile.am b/magick/Makefile.am index c2dd665a4..07092c246 100644 --- a/magick/Makefile.am +++ b/magick/Makefile.am @@ -217,6 +217,7 @@ MAGICK_BASE_SRCS = \ magick/segment.h \ magick/semaphore.c \ magick/semaphore.h \ + magick/semaphore-private.h \ magick/shear.c \ magick/shear.h \ magick/signature.c \ @@ -393,6 +394,7 @@ MAGICK_NOINST_HDRS = \ magick/random-private.h \ magick/resample-private.h \ magick/resize-private.h \ + magick/semaphore-private.h \ magick/signature-private.h \ magick/static.h \ magick/stream-private.h \ diff --git a/magick/semaphore-private.h b/magick/semaphore-private.h new file mode 100644 index 000000000..0059ae16e --- /dev/null +++ b/magick/semaphore-private.h @@ -0,0 +1,79 @@ +/* + Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization + dedicated to making software imaging solutions freely available. + + You may not use this file except in compliance with the License. + obtain a copy of the License at + + http://www.imagemagick.org/script/license.php + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + MagickCore private methods to lock and unlock semaphores. +*/ +#ifndef _MAGICKCORE_SEMAPHORE_PRIVATE_H +#define _MAGICKCORE_SEMAPHORE_PRIVATE_H + +#if defined(__cplusplus) || defined(c_plusplus) +extern "C" { +#endif + +#if defined(MAGICKCORE_HAVE_PTHREAD) +static pthread_mutex_t + semaphore_mutex = PTHREAD_MUTEX_INITIALIZER; +#elif defined(MAGICKCORE_HAVE_WINTHREADS) +static LONG + semaphore_mutex = 0; +#else +static long + semaphore_mutex = 0; +#endif + +static inline void LockMagickMutex(void) +{ +#if defined(MAGICKCORE_HAVE_PTHREAD) + { + int + status; + + status=pthread_mutex_lock(&semaphore_mutex); + if (status != 0) + { + errno=status; + ThrowFatalException(ResourceLimitFatalError,"UnableToLockSemaphore"); + } + } +#elif defined(MAGICKCORE_HAVE_WINTHREADS) + while (InterlockedCompareExchange(&semaphore_mutex,1L,0L) != 0) + Sleep(10); +#endif +} + +static inline void UnlockMagickMutex(void) +{ +#if defined(MAGICKCORE_HAVE_PTHREAD) + { + int + status; + + status=pthread_mutex_unlock(&semaphore_mutex); + if (status != 0) + { + errno=status; + ThrowFatalException(ResourceLimitFatalError,"UnableToUnlockSemaphore"); + } + } +#elif defined(MAGICKCORE_HAVE_WINTHREADS) + InterlockedExchange(&semaphore_mutex,0L); +#endif +} + +#if defined(__cplusplus) || defined(c_plusplus) +} +#endif + +#endif diff --git a/magick/semaphore.c b/magick/semaphore.c index 09ba6f2d6..9e31017ef 100644 --- a/magick/semaphore.c +++ b/magick/semaphore.c @@ -46,6 +46,7 @@ #include "magick/exception-private.h" #include "magick/memory_.h" #include "magick/semaphore.h" +#include "magick/semaphore-private.h" #include "magick/string_.h" #include "magick/thread_.h" #include "magick/thread-private.h" @@ -68,27 +69,6 @@ struct SemaphoreInfo signature; }; -/* - Static declaractions. -*/ -#if defined(MAGICKCORE_HAVE_PTHREAD) -static pthread_mutex_t - semaphore_mutex = PTHREAD_MUTEX_INITIALIZER; -#elif defined(MAGICKCORE_HAVE_WINTHREADS) -static LONG - semaphore_mutex = 0; -#else -static long - semaphore_mutex = 0; -#endif - -/* - Forward declaractions. -*/ -static void - LockMagickMutex(void), - UnlockMagickMutex(void); - /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % @@ -249,45 +229,6 @@ MagickExport void DestroySemaphoreInfo(SemaphoreInfo **semaphore_info) % % % % % % -+ L o c k M a g i c k M u t e x % -% % -% % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% LockMagickMutex() locks a global mutex. If it is already locked, the -% calling thread blocks until the mutex becomes available. -% -% The format of the LockMagickMutex method is: -% -% void LockMagickMutex(void) -% -*/ -static void LockMagickMutex(void) -{ -#if defined(MAGICKCORE_HAVE_PTHREAD) - { - int - status; - - status=pthread_mutex_lock(&semaphore_mutex); - if (status != 0) - { - errno=status; - ThrowFatalException(ResourceLimitFatalError,"UnableToLockSemaphore"); - } - } -#elif defined(MAGICKCORE_HAVE_WINTHREADS) - while (InterlockedCompareExchange(&semaphore_mutex,1L,0L) != 0) - Sleep(10); -#endif -} - -/* -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% % -% % % L o c k S e m a p h o r e I n f o % % % % % @@ -417,43 +358,6 @@ MagickExport void SemaphoreComponentTerminus(void) % % % % % % -+ U n l o c k M a g i c k M u t e x % -% % -% % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% UnlockMagickMutex() releases a global mutex. -% -% The format of the LockMagickMutex method is: -% -% void UnlockMagickMutex(void) -% -*/ -static void UnlockMagickMutex(void) -{ -#if defined(MAGICKCORE_HAVE_PTHREAD) - { - int - status; - - status=pthread_mutex_unlock(&semaphore_mutex); - if (status != 0) - { - errno=status; - ThrowFatalException(ResourceLimitFatalError,"UnableToUnlockSemaphore"); - } - } -#elif defined(MAGICKCORE_HAVE_WINTHREADS) - InterlockedExchange(&semaphore_mutex,0L); -#endif -} - -/* -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% % -% % % U n l o c k S e m a p h o r e I n f o % % % % % diff --git a/magick/version.h b/magick/version.h index 04c0b5b0f..e47da15bc 100644 --- a/magick/version.h +++ b/magick/version.h @@ -33,8 +33,8 @@ extern "C" { #define MagickLibAddendum "-8" #define MagickLibInterface 3 #define MagickLibMinInterface 3 -#define MagickReleaseDate "2010-05-09" -#define MagickChangeDate "20100508" +#define MagickReleaseDate "2010-05-12" +#define MagickChangeDate "20100512" #define MagickAuthoritativeURL "http://www.imagemagick.org" #define MagickHomeURL "file:///usr/local/share/doc/ImageMagick-6.6.1/index.html" #if (MAGICKCORE_QUANTUM_DEPTH == 8)