From f04f96e83d1ed2971f978c3d95291cf2ba5240d6 Mon Sep 17 00:00:00 2001 From: "Mr. eXoDia" Date: Mon, 22 Dec 2014 23:22:59 +0100 Subject: [PATCH] fixed CriticalSectionLocker (thanks to Nukem) --- TitanEngine/Global.Engine.Threading.cpp | 7 ++++++- TitanEngine/Global.Engine.Threading.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) 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