From dad37860e2d48e1e3668e1fe2875b0bbe7992234 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 27 Sep 2013 18:55:26 +0000 Subject: Elbeem: fix memory leak and add guarded allocator directives --- intern/elbeem/CMakeLists.txt | 1 + intern/elbeem/SConscript | 2 +- intern/elbeem/intern/attributes.h | 25 +++++++++++++++++++++++++ intern/elbeem/intern/controlparticles.h | 23 +++++++++++++++++++++++ intern/elbeem/intern/isosurface.h | 9 +++++++++ intern/elbeem/intern/mvmcoords.h | 18 ++++++++++++++++++ intern/elbeem/intern/ntl_blenderdumper.h | 8 ++++++++ intern/elbeem/intern/ntl_bsptree.h | 7 +++++++ intern/elbeem/intern/ntl_geometryclass.h | 8 ++++++++ intern/elbeem/intern/ntl_geometrymodel.h | 9 +++++++++ intern/elbeem/intern/ntl_geometryobject.h | 9 +++++++++ intern/elbeem/intern/ntl_geometryshader.h | 10 ++++++++++ intern/elbeem/intern/ntl_lighting.h | 13 +++++++++++++ intern/elbeem/intern/ntl_matrices.h | 7 +++++++ intern/elbeem/intern/ntl_ray.h | 21 +++++++++++++++++++++ intern/elbeem/intern/ntl_vector3dim.h | 9 +++++++++ intern/elbeem/intern/ntl_world.h | 15 +++++++++++++++ intern/elbeem/intern/parametrizer.h | 9 +++++++++ intern/elbeem/intern/particletracer.cpp | 1 + intern/elbeem/intern/particletracer.h | 15 +++++++++++++++ intern/elbeem/intern/simulation_object.h | 9 +++++++++ intern/elbeem/intern/solver_class.h | 18 ++++++++++++++++++ intern/elbeem/intern/solver_control.cpp | 9 +++++++-- intern/elbeem/intern/solver_control.h | 14 ++++++++++++++ intern/elbeem/intern/solver_interface.h | 19 +++++++++++++++++++ 25 files changed, 285 insertions(+), 3 deletions(-) (limited to 'intern') diff --git a/intern/elbeem/CMakeLists.txt b/intern/elbeem/CMakeLists.txt index 2adeb573f06..887abea3604 100644 --- a/intern/elbeem/CMakeLists.txt +++ b/intern/elbeem/CMakeLists.txt @@ -25,6 +25,7 @@ set(INC extern + ../guardedalloc ) set(INC_SYS diff --git a/intern/elbeem/SConscript b/intern/elbeem/SConscript index 133f02e41bc..e3a20cf9d45 100644 --- a/intern/elbeem/SConscript +++ b/intern/elbeem/SConscript @@ -43,6 +43,6 @@ if env['WITH_BF_OPENMP']: if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'): defs += ' USE_MSVC6FIXES' incs += ' ' + env['BF_PNG_INC'] + ' ' + env['BF_ZLIB_INC'] -incs += ' extern ' +incs += ' extern ../../guardedalloc' env.BlenderLib ('bf_intern_elbeem', sources, Split(incs), Split(defs), libtype='intern', priority=0 ) diff --git a/intern/elbeem/intern/attributes.h b/intern/elbeem/intern/attributes.h index b2fbd7fd910..f5617313f69 100644 --- a/intern/elbeem/intern/attributes.h +++ b/intern/elbeem/intern/attributes.h @@ -14,6 +14,11 @@ #ifndef NTL_ATTRIBUTES_H #include "utilities.h" + +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + template class ntlMatrix4x4; class ntlSetVec3f; std::ostream& operator<<( std::ostream& os, const ntlSetVec3f& i ); @@ -110,6 +115,11 @@ class AnimChannel vector mValue; /*! anim channel attr times */ vector mTimes; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:AnimChannel") +#endif }; @@ -127,6 +137,11 @@ class ntlSetVec3f { ntlSetVec3f& operator*=( const ntlSetVec3f &v ); vector mVerts; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlSetVec3f") +#endif }; @@ -163,6 +178,11 @@ class Attribute protected: bool initChannel(int elemSize); + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:Attribute") +#endif }; @@ -195,6 +215,11 @@ class AttributeList bool ignoreParameter(string name, string source); void print(); protected: + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:AttributeList") +#endif }; ntlVec3f channelFindMaxVf (AnimChannel channel); diff --git a/intern/elbeem/intern/controlparticles.h b/intern/elbeem/intern/controlparticles.h index 6b4b77881cc..915ede66fe6 100644 --- a/intern/elbeem/intern/controlparticles.h +++ b/intern/elbeem/intern/controlparticles.h @@ -18,6 +18,10 @@ #include "ntl_geometrymodel.h" +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + // indicator for LBM inclusion //#ifndef LBMDIM @@ -80,6 +84,11 @@ public: forceAtt = forceVel = forceMaxd = LbmVec(0.,0.,0.); compAvWeight=0.; compAv=LbmVec(0.); }; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ControlForces") +#endif }; @@ -115,6 +124,11 @@ public: // init all zero / defaults void reset(); + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ControlParticle") +#endif }; @@ -128,6 +142,10 @@ public: // particle positions std::vector particles; +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ControlParticleSet") +#endif }; @@ -296,6 +314,11 @@ protected: void initTimeArray(LbmFloat t, std::vector &parts); bool checkPointInside(ntlTree *tree, ntlVec3Gfx org, gfxReal &distance); + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ControlParticles") +#endif }; diff --git a/intern/elbeem/intern/isosurface.h b/intern/elbeem/intern/isosurface.h index be78db9b293..15b923866d3 100644 --- a/intern/elbeem/intern/isosurface.h +++ b/intern/elbeem/intern/isosurface.h @@ -15,6 +15,10 @@ #include "ntl_geometryobject.h" #include "ntl_bsptree.h" +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + #define ISO_STRICT_DEBUG 0 #define ISOSTRICT_EXIT *((int *)0)=0; @@ -224,6 +228,11 @@ class IsoSurface : vector mDboundary; float mSCrad1, mSCrad2; ntlVec3Gfx mSCcenter; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:IsoSurface") +#endif }; diff --git a/intern/elbeem/intern/mvmcoords.h b/intern/elbeem/intern/mvmcoords.h index cb51e91d467..56d991aac6e 100644 --- a/intern/elbeem/intern/mvmcoords.h +++ b/intern/elbeem/intern/mvmcoords.h @@ -34,6 +34,10 @@ #include "ieeefp.h" #endif +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + // weight and triangle index class mvmIndexWeight { public: @@ -49,6 +53,11 @@ class mvmIndexWeight { mvmFloat weight; int index; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:mvmIndexWeight") +#endif }; // transfer point with weights @@ -58,6 +67,11 @@ class mvmTransferPoint { ntlVec3Gfx lastpos; //! triangle weights std::vector weights; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:mvmTransferPoint") +#endif }; @@ -86,6 +100,10 @@ class MeanValueMeshCoords { std::vector mVertices; int mNumVerts; +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:MeanValueMeshCoords") +#endif }; #endif diff --git a/intern/elbeem/intern/ntl_blenderdumper.h b/intern/elbeem/intern/ntl_blenderdumper.h index cd1331afa83..473e746463c 100644 --- a/intern/elbeem/intern/ntl_blenderdumper.h +++ b/intern/elbeem/intern/ntl_blenderdumper.h @@ -12,6 +12,10 @@ #ifndef NTL_BLENDERDUMPER_H #include "ntl_world.h" +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + class ntlBlenderDumper : public ntlWorld { @@ -27,6 +31,10 @@ public: protected: +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlBlenderDumper") +#endif }; #define NTL_BLENDERDUMPER_H diff --git a/intern/elbeem/intern/ntl_bsptree.h b/intern/elbeem/intern/ntl_bsptree.h index 775a216fba8..9c6bf37c591 100644 --- a/intern/elbeem/intern/ntl_bsptree.h +++ b/intern/elbeem/intern/ntl_bsptree.h @@ -22,6 +22,9 @@ #define BSP_STACK_SIZE 50 +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif //! bsp tree stack classes, defined in ntl_bsptree.cpp, // detailed definition unnecesseary here @@ -120,6 +123,10 @@ class ntlTree //! duplicated triangles, inited during subdivide int mTriDoubles; +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlTree") +#endif }; diff --git a/intern/elbeem/intern/ntl_geometryclass.h b/intern/elbeem/intern/ntl_geometryclass.h index 5b7ff1492db..9d8f1ee23d5 100644 --- a/intern/elbeem/intern/ntl_geometryclass.h +++ b/intern/elbeem/intern/ntl_geometryclass.h @@ -16,6 +16,10 @@ #include "attributes.h" +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + //! geometry class type ids #define GEOCLASSTID_OBJECT 1 #define GEOCLASSTID_SHADER 2 @@ -111,6 +115,10 @@ class ntlGeometryClass private: +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlGeometryClass") +#endif }; diff --git a/intern/elbeem/intern/ntl_geometrymodel.h b/intern/elbeem/intern/ntl_geometrymodel.h index 93fe2076811..08d3bcb16a3 100644 --- a/intern/elbeem/intern/ntl_geometrymodel.h +++ b/intern/elbeem/intern/ntl_geometrymodel.h @@ -14,6 +14,10 @@ #include "ntl_geometryobject.h" +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + /*! A simple box object generatedd by 12 triangles */ class ntlGeometryObjModel : public ntlGeometryObject { @@ -89,6 +93,11 @@ class ntlGeometryObjModel : public ntlGeometryObject /*! set data file name */ inline void setFilename(string set) { mFilename = set; } + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlGeometryObjModel") +#endif }; #endif diff --git a/intern/elbeem/intern/ntl_geometryobject.h b/intern/elbeem/intern/ntl_geometryobject.h index 677f132f4c3..2c229193358 100644 --- a/intern/elbeem/intern/ntl_geometryobject.h +++ b/intern/elbeem/intern/ntl_geometryobject.h @@ -16,6 +16,11 @@ #include "ntl_geometryclass.h" #include "ntl_lighting.h" #include "ntl_ray.h" + +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + class ntlRenderGlobals; class ntlTriangle; @@ -240,6 +245,10 @@ class ntlGeometryObject : public ntlGeometryClass public: +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlGeometryObject") +#endif }; #endif diff --git a/intern/elbeem/intern/ntl_geometryshader.h b/intern/elbeem/intern/ntl_geometryshader.h index f43df6539e6..7e0d61f453e 100644 --- a/intern/elbeem/intern/ntl_geometryshader.h +++ b/intern/elbeem/intern/ntl_geometryshader.h @@ -13,6 +13,11 @@ #define NTL_GEOMETRYSHADER_H #include "ntl_geometryclass.h" + +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + class ntlGeometryObject; class ntlRenderGlobals; @@ -57,6 +62,11 @@ class ntlGeometryShader : /*! surface output name for this simulation */ string mOutFilename; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlGeometryShader") +#endif }; #endif diff --git a/intern/elbeem/intern/ntl_lighting.h b/intern/elbeem/intern/ntl_lighting.h index 88fcaef90e6..0cae32f40ad 100644 --- a/intern/elbeem/intern/ntl_lighting.h +++ b/intern/elbeem/intern/ntl_lighting.h @@ -14,6 +14,11 @@ #define NTL_LIGHTING_H #include "ntl_vector3dim.h" + +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + class ntlMaterial; class ntlRay; class ntlRenderGlobals; @@ -88,6 +93,10 @@ protected: private: +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlLightObject") +#endif }; @@ -195,6 +204,10 @@ public: //! Set Fresnel on/off inline void setFresnel(int set) { mFresnel = set; } +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlMaterial") +#endif }; diff --git a/intern/elbeem/intern/ntl_matrices.h b/intern/elbeem/intern/ntl_matrices.h index ab2a30b49f2..597fcf1c64e 100644 --- a/intern/elbeem/intern/ntl_matrices.h +++ b/intern/elbeem/intern/ntl_matrices.h @@ -14,6 +14,9 @@ #include "ntl_vector3dim.h" +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif // The basic vector class template @@ -96,6 +99,10 @@ public: protected: +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlMatrix4x4") +#endif }; diff --git a/intern/elbeem/intern/ntl_ray.h b/intern/elbeem/intern/ntl_ray.h index 5f6d34e3020..6384edcb1b1 100644 --- a/intern/elbeem/intern/ntl_ray.h +++ b/intern/elbeem/intern/ntl_ray.h @@ -18,6 +18,10 @@ #include "ntl_geometryobject.h" #include "ntl_bsptree.h" +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + class ntlTriangle; class ntlRay; class ntlTree; @@ -39,6 +43,11 @@ class ntlIntersection { ntlRay *ray; ntlTriangle *tri; char flags; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlIntersection") +#endif }; //! the main ray class @@ -138,6 +147,10 @@ private: /*! ID of this ray (from renderglobals */ int mID; +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlRay") +#endif }; @@ -225,6 +238,10 @@ private: /*! ID of last ray that an intersection was calculated for */ int mLastRay; +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlTriangle") +#endif }; @@ -410,6 +427,10 @@ private: /*! shader/obj initializations are only done on first init */ bool mFirstInitDone; +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlScene") +#endif }; diff --git a/intern/elbeem/intern/ntl_vector3dim.h b/intern/elbeem/intern/ntl_vector3dim.h index e3e492c396e..38a6d2da80b 100644 --- a/intern/elbeem/intern/ntl_vector3dim.h +++ b/intern/elbeem/intern/ntl_vector3dim.h @@ -32,6 +32,10 @@ #include #include +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + /* absolute value */ template < class T > inline T @@ -205,6 +209,11 @@ protected: private: Scalar value[3]; //< Storage of vector values + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlVector3Dim") +#endif }; diff --git a/intern/elbeem/intern/ntl_world.h b/intern/elbeem/intern/ntl_world.h index 6cec098132b..30b7cbf4d92 100644 --- a/intern/elbeem/intern/ntl_world.h +++ b/intern/elbeem/intern/ntl_world.h @@ -18,6 +18,11 @@ #include "ntl_geometryobject.h" #include "simulation_object.h" #include "elbeem.h" + +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + class ntlOpenGLRenderer; class ntlScene; class SimulationObject; @@ -119,6 +124,11 @@ class ntlWorld /*! count no. of frame for correct sim time */ int mSimFrameCnt; vector mSimFrameValue; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlWorld") +#endif }; @@ -389,6 +399,11 @@ private: bool mSingleFrameMode; //! filename for single frame mode string mSingleFrameFilename; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlRenderGlobals") +#endif }; diff --git a/intern/elbeem/intern/parametrizer.h b/intern/elbeem/intern/parametrizer.h index f3ea3186654..2d96b5b039f 100644 --- a/intern/elbeem/intern/parametrizer.h +++ b/intern/elbeem/intern/parametrizer.h @@ -17,6 +17,10 @@ #include "utilities.h" #include "attributes.h" +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + /* parametrizer accuracy */ typedef double ParamFloat; typedef ntlVec3d ParamVec; @@ -306,6 +310,11 @@ class Parametrizer { /*! pointer to the attribute list */ AttributeList *mpAttrs; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:Parametrizer") +#endif }; diff --git a/intern/elbeem/intern/particletracer.cpp b/intern/elbeem/intern/particletracer.cpp index d6bc450198f..593b582d91f 100644 --- a/intern/elbeem/intern/particletracer.cpp +++ b/intern/elbeem/intern/particletracer.cpp @@ -53,6 +53,7 @@ ParticleTracer::ParticleTracer() : ParticleTracer::~ParticleTracer() { debMsgStd("ParticleTracer::~ParticleTracer",DM_MSG,"destroyed",10); + if(mpTrafo) delete mpTrafo; } /*****************************************************************************/ diff --git a/intern/elbeem/intern/particletracer.h b/intern/elbeem/intern/particletracer.h index 5d328907e71..c14c8e2f0cb 100644 --- a/intern/elbeem/intern/particletracer.h +++ b/intern/elbeem/intern/particletracer.h @@ -12,6 +12,11 @@ #ifndef NTL_PARTICLETRACER_H #include "ntl_geometryobject.h" + +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + template class ntlMatrix4x4; // particle types @@ -131,6 +136,11 @@ class ParticleObject /* for list constructions */ ParticleObject *mpNext; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ParticleObject") +#endif }; @@ -274,6 +284,11 @@ class ParticleTracer : /* prev pos save interval */ float mTrailTimeLast, mTrailInterval; int mTrailLength; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ParticleTracer") +#endif }; #define NTL_PARTICLETRACER_H diff --git a/intern/elbeem/intern/simulation_object.h b/intern/elbeem/intern/simulation_object.h index 76684fa6f83..4a89d1510a9 100644 --- a/intern/elbeem/intern/simulation_object.h +++ b/intern/elbeem/intern/simulation_object.h @@ -18,6 +18,10 @@ #include "ntl_geometryshader.h" #include "parametrizer.h" +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + class LbmSolverInterface; class CellIdentifierInterface; class ntlTree; @@ -188,6 +192,11 @@ class SimulationObject : virtual inline ntlVec3Gfx *getBBStart() { return &mGeoStart; } virtual inline ntlVec3Gfx *getBBEnd() { return &mGeoEnd; } + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:SimulationObject") +#endif }; diff --git a/intern/elbeem/intern/solver_class.h b/intern/elbeem/intern/solver_class.h index 1962e801a4e..593fea1b998 100644 --- a/intern/elbeem/intern/solver_class.h +++ b/intern/elbeem/intern/solver_class.h @@ -21,6 +21,10 @@ #include "ntl_ray.h" #include +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + #if PARALLEL==1 #include #endif // PARALLEL=1 @@ -145,6 +149,11 @@ class UniformFsgrCellIdentifier : if( x==cid->x && y==cid->y && z==cid->z && level==cid->level ) return true; return false; } + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:UniformFsgrCellIdentifier") +#endif }; //! information needed for each level in the simulation @@ -193,6 +202,10 @@ public: int lSizex, lSizey, lSizez; int lOffsx, lOffsy, lOffsz; +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:FsgrLevelData") +#endif }; @@ -740,6 +753,11 @@ class LbmFsgrSolver : static LbmFloat lesCoeffOffdiag[ 2 ][ 9 ]; # endif // LBMDIM==2 + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:LbmFsgrSolver") +#endif }; #undef STCON diff --git a/intern/elbeem/intern/solver_control.cpp b/intern/elbeem/intern/solver_control.cpp index 75134804f13..c3015b82f0a 100644 --- a/intern/elbeem/intern/solver_control.cpp +++ b/intern/elbeem/intern/solver_control.cpp @@ -225,7 +225,10 @@ LbmFsgrSolver::initCpdata() // manually switch on! if this is zero, nothing is done... mpControl->mSetForceStrength = this->mTForceStrength = 1.; - mpControl->mCons.clear(); + while (!mpControl->mCons.empty()) { + delete mpControl->mCons.back(); mpControl->mCons.pop_back(); + } + // init all control fluid objects int numobjs = (int)(mpGiObjects->size()); @@ -264,7 +267,9 @@ LbmFsgrSolver::initCpdata() if(0) { // manually switch on! if this is zero, nothing is done... mpControl->mSetForceStrength = this->mTForceStrength = 1.; - mpControl->mCons.clear(); + while (!mpControl->mCons.empty()) { + delete mpControl->mCons.back(); mpControl->mCons.pop_back(); + } // add new set LbmControlSet *cset; diff --git a/intern/elbeem/intern/solver_control.h b/intern/elbeem/intern/solver_control.h index afbe5394918..d20823d1827 100644 --- a/intern/elbeem/intern/solver_control.h +++ b/intern/elbeem/intern/solver_control.h @@ -16,6 +16,10 @@ #ifndef LBM_TESTCLASS_H #define LBM_TESTCLASS_H +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + //class IsoSurface; class ParticleObject; class ControlParticles; @@ -147,6 +151,11 @@ class LbmControlSet { AnimChannel mcCpScale; AnimChannel mcCpOffset; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:LbmControlSet") +#endif }; @@ -180,6 +189,11 @@ class LbmControlData // cp debug displau LbmFloat mDebugCpscale, mDebugVelScale, mDebugCompavScale, mDebugAttScale, mDebugMaxdScale, mDebugAvgVelScale; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:LbmControlData ") +#endif }; #endif // LBM_TESTCLASS_H diff --git a/intern/elbeem/intern/solver_interface.h b/intern/elbeem/intern/solver_interface.h index e25c59e2d50..e4720df307b 100644 --- a/intern/elbeem/intern/solver_interface.h +++ b/intern/elbeem/intern/solver_interface.h @@ -35,6 +35,11 @@ #include "parametrizer.h" #include "attributes.h" #include "isosurface.h" + +#ifdef WITH_CXX_GUARDEDALLOC +# include "MEM_guardedalloc.h" +#endif + class ParticleTracer; class ParticleObject; @@ -171,6 +176,11 @@ class LbmCellContents { CellFlagType flag; BubbleId bubble; LbmFloat ffrac; + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:LbmCellContents") +#endif }; /* struct for the coordinates of a cell in the grid */ @@ -224,6 +234,10 @@ class CellIdentifierInterface { //! has the grid been traversed? bool mEnd; +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:CellIdentifierInterface") +#endif }; @@ -601,6 +615,11 @@ class LbmSolverInterface #if PARALLEL==1 int mNumOMPThreads; #endif // PARALLEL==1 + +private: +#ifdef WITH_CXX_GUARDEDALLOC + MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:LbmSolverInterface") +#endif }; -- cgit v1.2.3