diff --git a/windows/JackWinMutex.cpp b/windows/JackWinMutex.cpp index 93717b4a..d237ec0a 100644 --- a/windows/JackWinMutex.cpp +++ b/windows/JackWinMutex.cpp @@ -88,6 +88,24 @@ namespace Jack { return(ReleaseMutex(fMutex) != 0); } + + bool JackWinCriticalSection::Lock() + { + EnterCriticalSection(&fSection); + return true; + } + + bool JackWinCriticalSection::Trylock() + { + return (TryEnterCriticalSection(&fSection)); + } + + bool JackWinCriticalSection::Unlock() + { + LeaveCriticalSection(&fSection); + return true; + } + } // namespace diff --git a/windows/JackWinMutex.h b/windows/JackWinMutex.h index f8f1b552..ded31f15 100644 --- a/windows/JackWinMutex.h +++ b/windows/JackWinMutex.h @@ -89,6 +89,31 @@ class SERVER_EXPORT JackWinMutex }; +class SERVER_EXPORT JackWinCriticalSection +{ + + protected: + + LPCRITICAL_SECTION fSection; + + public: + + JackWinCriticalSection(const char* name = NULL) + { + InitializeCriticalSection(&fSection); + } + + virtual ~JackWinCriticalSection() + { + DeleteCriticalSection(&fSection); + } + + bool Lock(); + bool Trylock(); + bool Unlock(); + +}; + } // namespace diff --git a/windows/JackWinProcessSync.h b/windows/JackWinProcessSync.h index 25cb4ec3..050cf5d0 100644 --- a/windows/JackWinProcessSync.h +++ b/windows/JackWinProcessSync.h @@ -30,7 +30,8 @@ namespace Jack \brief A synchronization primitive built using a condition variable. */ -class JackWinProcessSync : public JackWinMutex +//class JackWinProcessSync : public JackWinMutex +class JackWinProcessSync : public JackWinCriticalSection { private: