From: Tsuda Kageyu Date: Tue, 23 Apr 2013 07:25:18 +0000 (+0900) Subject: Add missing HAVE_WIN_ATOMIC block X-Git-Tag: v1.9~50^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8c71428d4f99bae21f227c7498f2c81dbb0cf40e;p=taglib Add missing HAVE_WIN_ATOMIC block --- diff --git a/taglib/toolkit/taglib.h b/taglib/toolkit/taglib.h index 833f624b..bc94aa88 100755 --- a/taglib/toolkit/taglib.h +++ b/taglib/toolkit/taglib.h @@ -69,38 +69,38 @@ #if defined(HAVE_STD_ATOMIC) # include -#elif defined(HAVE_BOOST_ATOMIC) -# include -#elif defined(HAVE_MAC_ATOMIC) -# include -#elif defined(HAVE_WIN_ATOMIC) -# include -#elif defined(HAVE_IA64_ATOMIC) -# include -#endif - -#if defined(HAVE_STD_ATOMIC) # define TAGLIB_ATOMIC_INT std::atomic # define TAGLIB_ATOMIC_INC(x) x.fetch_add(1) # define TAGLIB_ATOMIC_DEC(x) (x.fetch_sub(1) - 1) #elif defined(HAVE_BOOST_ATOMIC) +# include # define TAGLIB_ATOMIC_INT boost::atomic # define TAGLIB_ATOMIC_INC(x) x.fetch_add(1) # define TAGLIB_ATOMIC_DEC(x) (x.fetch_sub(1) - 1) #elif defined(HAVE_GCC_ATOMIC) -# define TAGLIB_ATOMIC_INT volatile int +# define TAGLIB_ATOMIC_INT int # define TAGLIB_ATOMIC_INC(x) __sync_add_and_fetch(&x, 1) # define TAGLIB_ATOMIC_DEC(x) __sync_sub_and_fetch(&x, 1) +#elif defined(HAVE_WIN_ATOMIC) +# if !defined(NOMINMAX) +# define NOMINMAX +# endif +# include +# define TAGLIB_ATOMIC_INT long +# define TAGLIB_ATOMIC_INC(x) InterlockedIncrement(&x) +# define TAGLIB_ATOMIC_DEC(x) InterlockedDecrement(&x) #elif defined(HAVE_MAC_ATOMIC) -# define TAGLIB_ATOMIC_INT volatile int32_t +# include +# define TAGLIB_ATOMIC_INT int32_t # define TAGLIB_ATOMIC_INC(x) OSAtomicIncrement32Barrier(&x) # define TAGLIB_ATOMIC_DEC(x) OSAtomicDecrement32Barrier(&x) #elif defined(HAVE_IA64_ATOMIC) -# define TAGLIB_ATOMIC_INT volatile int +# include +# define TAGLIB_ATOMIC_INT int # define TAGLIB_ATOMIC_INC(x) __sync_add_and_fetch(&x, 1) # define TAGLIB_ATOMIC_DEC(x) __sync_sub_and_fetch(&x, 1) #else -# define TAGLIB_ATOMIC_INT volatile int +# define TAGLIB_ATOMIC_INT int # define TAGLIB_ATOMIC_INC(x) (++x) # define TAGLIB_ATOMIC_DEC(x) (--x) #endif @@ -204,7 +204,7 @@ namespace TagLib { int count() { return refCount; } private: - TAGLIB_ATOMIC_INT refCount; + volatile TAGLIB_ATOMIC_INT refCount; }; #endif // DO_NOT_DOCUMENT