diff --git a/source/SkyXEngine.h b/source/SkyXEngine.h index e02265d45bd2205f353311f7ac402712aa1abe7e..dd76195a8519e970cc9ae31e00bfbb308a12b99e 100644 --- a/source/SkyXEngine.h +++ b/source/SkyXEngine.h @@ -292,7 +292,7 @@ QT стиль документирования (!) и QT_AUTOBRIEF - корот #ifndef __SKYXENGINE_H #define __SKYXENGINE_H -#define SKYXENGINE_VERSION "X.7.1" +#define SKYXENGINE_VERSION "X.8.0-dev" #define SKYXENGINE_VERSION4EDITORS "SkyXEngine version " ## SKYXENGINE_VERSION diff --git a/source/anim/DynamicModelProvider.cpp b/source/anim/DynamicModelProvider.cpp index ae0e4fb1dadf41bf95b98058c4391134b4222503..7e85e07760c6fd57f1913dd9b0efec8803d830c0 100644 --- a/source/anim/DynamicModelProvider.cpp +++ b/source/anim/DynamicModelProvider.cpp @@ -351,7 +351,7 @@ void CDynamicModelProvider::computeVisibility(const IFrustum *pFrustum, CRendera { pVisibility->setItemCountDynamic(m_apModels.size()); pVisibility->resetItemTransparentDynamic(); -#if 0 +#if 1 CVisUpdate cycle(pFrustum, pVisibility, pReference, m_apModels); ID id = m_pCore->getAsyncTaskRunner()->forLoop(0, m_apModels.size(), &cycle, 500); m_pCore->getAsyncTaskRunner()->waitForLoop(id); diff --git a/source/gdefines.h b/source/gdefines.h index 833029213a537cde4adbdb491a13d19360d55829..136993cfdc10b24826512b7a8a0c7ab292d2d4da 100644 --- a/source/gdefines.h +++ b/source/gdefines.h @@ -159,8 +159,12 @@ struct IBaseObject class IXUnknown { protected: + IXUnknown() + { + m_uRefCount.store(1); + } virtual ~IXUnknown() = default; - UINT m_uRefCount = 1; + std::atomic_uint m_uRefCount; public: void XMETHODCALLTYPE AddRef() { @@ -168,8 +172,7 @@ public: } virtual void XMETHODCALLTYPE Release() { - --m_uRefCount; - if(!m_uRefCount) + if(!--m_uRefCount) { delete this; } @@ -186,7 +189,11 @@ template <class T> class IXUnknownImplementation: public T { private: - UINT m_uRefCount = 1; + IXUnknownImplementation() + { + m_uRefCount.store(1); + } + std::atomic_uint m_uRefCount; public: void XMETHODCALLTYPE AddRef() override { @@ -194,8 +201,7 @@ public: } virtual void XMETHODCALLTYPE Release() override { - --m_uRefCount; - if(!m_uRefCount) + if(!--m_uRefCount) { delete this; }