diff --git a/libs/pbd/pbd/spinlock.h b/libs/pbd/pbd/spinlock.h index 7173fde594..69b76ce820 100644 --- a/libs/pbd/pbd/spinlock.h +++ b/libs/pbd/pbd/spinlock.h @@ -32,11 +32,17 @@ namespace PBD { * * initialize with BOOST_DETAIL_SPINLOCK_INIT */ -static boost::detail::spinlock sl_init = BOOST_DETAIL_SPINLOCK_INIT; +#ifdef COMPILER_MSVC +private: + static boost::detail::spinlock sl_init = BOOST_DETAIL_SPINLOCK_INIT; +# define SPINLOCK_INIT sl_init +#else +# define SPINLOCK_INIT BOOST_DETAIL_SPINLOCK_INIT +#endif struct spinlock_t { public: - spinlock_t () : l (sl_init) {}; + spinlock_t () : l (SPINLOCK_INIT) {}; void lock () { l.lock (); } void unlock () { l.unlock (); } bool try_lock () { return l.try_lock (); } @@ -44,6 +50,8 @@ private: boost::detail::spinlock l; }; +#undef SPINLOCK_INIT + /* RAII wrapper */ class LIBPBD_API SpinLock {