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 \
magick/segment.h \
magick/semaphore.c \
magick/semaphore.h \
+ magick/semaphore-private.h \
magick/shear.c \
magick/shear.h \
magick/signature.c \
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 \
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);
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);
<configure name="NAME" value="ImageMagick"/>
<configure name="LIB_VERSION" value="0x661"/>
<configure name="LIB_VERSION_NUMBER" value="6,6,1,8"/>
- <configure name="RELEASE_DATE" value="2010-05-09"/>
+ <configure name="RELEASE_DATE" value="2010-05-12"/>
<configure name="CONFIGURE" value="./configure "/>
<configure name="PREFIX" value="/usr/local"/>
<configure name="EXEC-PREFIX" value="/usr/local"/>
magick/segment.h \
magick/semaphore.c \
magick/semaphore.h \
+ magick/semaphore-private.h \
magick/shear.c \
magick/shear.h \
magick/signature.c \
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 \
--- /dev/null
+/*
+ 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
#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"
signature;
};
\f
-/*
- 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
-\f
-/*
- Forward declaractions.
-*/
-static void
- LockMagickMutex(void),
- UnlockMagickMutex(void);
-\f
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% %
-+ 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
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
% L o c k S e m a p h o r e I n f o %
% %
% %
% %
% %
% %
-+ 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
-}
-\f
-/*
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% %
-% %
-% %
% U n l o c k S e m a p h o r e I n f o %
% %
% %
#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)