// If you desperately want to compile Nuclex.Graphics.Native with Visual C++ 2010, // copy this file to C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\ // #pragma once #define WIN32_LEAN_AND_MEAN #define VC_EXTRALEAN #define NO_MINMAX #include namespace std { class mutex { public: mutex() { ::InitializeCriticalSection(&this->critical_section); } public: ~mutex() { ::DeleteCriticalSection(&this->critical_section); } public: void lock() { ::EnterCriticalSection(&this->critical_section); } public: bool trylock() { return false; } public: void unlock() { ::LeaveCriticalSection(&this->critical_section); } private: CRITICAL_SECTION critical_section; }; template class lock_guard { public: lock_guard(TLockable &lockable) : lockable(lockable) { lockable.lock(); } public: ~lock_guard() { lockable.unlock(); } private: TLockable &lockable; }; } // namespace std