diff --git a/TitanEngine/Global.Engine.Threading.cpp b/TitanEngine/Global.Engine.Threading.cpp index 605d78e..e01074c 100644 --- a/TitanEngine/Global.Engine.Threading.cpp +++ b/TitanEngine/Global.Engine.Threading.cpp @@ -30,20 +30,25 @@ CriticalSectionLocker::CriticalSectionLocker(CriticalSectionLock lock) { CriticalSectionInitializeLocks(); //initialize critical sections gLock = lock; + EnterCriticalSection(&locks[gLock]); + Locked = true; } CriticalSectionLocker::~CriticalSectionLocker() { - LeaveCriticalSection(&locks[gLock]); + if(Locked) + LeaveCriticalSection(&locks[gLock]); } void CriticalSectionLocker::unlock() { + Locked = false; LeaveCriticalSection(&locks[gLock]); } void CriticalSectionLocker::relock() { EnterCriticalSection(&locks[gLock]); + Locked = true; } \ No newline at end of file diff --git a/TitanEngine/Global.Engine.Threading.h b/TitanEngine/Global.Engine.Threading.h index 2b39b6d..3d6a246 100644 --- a/TitanEngine/Global.Engine.Threading.h +++ b/TitanEngine/Global.Engine.Threading.h @@ -25,6 +25,7 @@ public: private: CriticalSectionLock gLock; + bool Locked; }; #endif //_GLOBAL_ENGINE_THREADING_H \ No newline at end of file