diff --git a/storm/thread/SSyncObject.cpp b/storm/thread/SSyncObject.cpp index 578d3b5..4df43b0 100644 --- a/storm/thread/SSyncObject.cpp +++ b/storm/thread/SSyncObject.cpp @@ -12,6 +12,25 @@ SSyncObject::SSyncObject() { #endif } +SSyncObject::~SSyncObject() { +#if defined(WHOA_SYSTEM_WIN) + this->Close(); +#endif + +#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX) + pthread_mutex_destroy(&this->m_mutex); +#endif +} + +void SSyncObject::Close() { +#if defined(WHOA_SYSTEM_WIN) + if (this->m_opaqueData) { + CloseHandle(this->m_opaqueData); + this->m_opaqueData = nullptr; + } +#endif +} + bool SSyncObject::Valid() { #if defined(WHOA_SYSTEM_WIN) return this->m_opaqueData != nullptr; diff --git a/storm/thread/SSyncObject.hpp b/storm/thread/SSyncObject.hpp index 655e4c2..12d7d60 100644 --- a/storm/thread/SSyncObject.hpp +++ b/storm/thread/SSyncObject.hpp @@ -28,6 +28,7 @@ class SSyncObject { // Member functions SSyncObject(); + ~SSyncObject(); void Close(); bool Valid(); uint32_t Wait(uint32_t timeoutMs);