[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60399] trunk/blender/intern/elbeem: Elbeem: fix memory leak and add guarded allocator directives

Sergey Sharybin sergey.vfx at gmail.com
Fri Sep 27 20:55:27 CEST 2013


Revision: 60399
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60399
Author:   nazgul
Date:     2013-09-27 18:55:26 +0000 (Fri, 27 Sep 2013)
Log Message:
-----------
Elbeem: fix memory leak and add guarded allocator directives

Modified Paths:
--------------
    trunk/blender/intern/elbeem/CMakeLists.txt
    trunk/blender/intern/elbeem/SConscript
    trunk/blender/intern/elbeem/intern/attributes.h
    trunk/blender/intern/elbeem/intern/controlparticles.h
    trunk/blender/intern/elbeem/intern/isosurface.h
    trunk/blender/intern/elbeem/intern/mvmcoords.h
    trunk/blender/intern/elbeem/intern/ntl_blenderdumper.h
    trunk/blender/intern/elbeem/intern/ntl_bsptree.h
    trunk/blender/intern/elbeem/intern/ntl_geometryclass.h
    trunk/blender/intern/elbeem/intern/ntl_geometrymodel.h
    trunk/blender/intern/elbeem/intern/ntl_geometryobject.h
    trunk/blender/intern/elbeem/intern/ntl_geometryshader.h
    trunk/blender/intern/elbeem/intern/ntl_lighting.h
    trunk/blender/intern/elbeem/intern/ntl_matrices.h
    trunk/blender/intern/elbeem/intern/ntl_ray.h
    trunk/blender/intern/elbeem/intern/ntl_vector3dim.h
    trunk/blender/intern/elbeem/intern/ntl_world.h
    trunk/blender/intern/elbeem/intern/parametrizer.h
    trunk/blender/intern/elbeem/intern/particletracer.cpp
    trunk/blender/intern/elbeem/intern/particletracer.h
    trunk/blender/intern/elbeem/intern/simulation_object.h
    trunk/blender/intern/elbeem/intern/solver_class.h
    trunk/blender/intern/elbeem/intern/solver_control.cpp
    trunk/blender/intern/elbeem/intern/solver_control.h
    trunk/blender/intern/elbeem/intern/solver_interface.h

Modified: trunk/blender/intern/elbeem/CMakeLists.txt
===================================================================
--- trunk/blender/intern/elbeem/CMakeLists.txt	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/CMakeLists.txt	2013-09-27 18:55:26 UTC (rev 60399)
@@ -25,6 +25,7 @@
 
 set(INC
 	extern
+	../guardedalloc
 )
 
 set(INC_SYS

Modified: trunk/blender/intern/elbeem/SConscript
===================================================================
--- trunk/blender/intern/elbeem/SConscript	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/SConscript	2013-09-27 18:55:26 UTC (rev 60399)
@@ -43,6 +43,6 @@
 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 )

Modified: trunk/blender/intern/elbeem/intern/attributes.h
===================================================================
--- trunk/blender/intern/elbeem/intern/attributes.h	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/intern/attributes.h	2013-09-27 18:55:26 UTC (rev 60399)
@@ -14,6 +14,11 @@
 #ifndef NTL_ATTRIBUTES_H
 
 #include "utilities.h"
+
+#ifdef WITH_CXX_GUARDEDALLOC
+#  include "MEM_guardedalloc.h"
+#endif
+
 template<class T> class ntlMatrix4x4;
 class ntlSetVec3f;
 std::ostream& operator<<( std::ostream& os, const ntlSetVec3f& i );
@@ -110,6 +115,11 @@
 		vector<Scalar> mValue;
 		/*! anim channel attr times */
 		vector<double> mTimes;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:AnimChannel")
+#endif
 };
 
 
@@ -127,6 +137,11 @@
 		ntlSetVec3f& operator*=( const ntlSetVec3f &v );
 
 		vector<ntlVec3f> mVerts;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlSetVec3f")
+#endif
 };
 
 
@@ -163,6 +178,11 @@
 	protected:
 
 		bool initChannel(int elemSize);
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:Attribute")
+#endif
 };
 
 
@@ -195,6 +215,11 @@
 		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<ntlVec3f> channel);

Modified: trunk/blender/intern/elbeem/intern/controlparticles.h
===================================================================
--- trunk/blender/intern/elbeem/intern/controlparticles.h	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/intern/controlparticles.h	2013-09-27 18:55:26 UTC (rev 60399)
@@ -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 @@
 		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 @@
 
 	// init all zero / defaults
 	void reset();
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ControlParticle")
+#endif
 };
 
 
@@ -128,6 +142,10 @@
 	// particle positions
 	std::vector<ControlParticle> particles;
 
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ControlParticleSet")
+#endif
 };
 
 
@@ -296,6 +314,11 @@
 	void initTimeArray(LbmFloat t, std::vector<ControlParticle> &parts);
 
 	bool checkPointInside(ntlTree *tree, ntlVec3Gfx org, gfxReal &distance);
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ControlParticles")
+#endif
 };
 
 

Modified: trunk/blender/intern/elbeem/intern/isosurface.h
===================================================================
--- trunk/blender/intern/elbeem/intern/isosurface.h	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/intern/isosurface.h	2013-09-27 18:55:26 UTC (rev 60399)
@@ -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 @@
 		vector<int> mDboundary;
 		float mSCrad1, mSCrad2;
 		ntlVec3Gfx mSCcenter;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:IsoSurface")
+#endif
 };
 
 

Modified: trunk/blender/intern/elbeem/intern/mvmcoords.h
===================================================================
--- trunk/blender/intern/elbeem/intern/mvmcoords.h	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/intern/mvmcoords.h	2013-09-27 18:55:26 UTC (rev 60399)
@@ -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 @@
 
 		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 @@
 		ntlVec3Gfx lastpos;
 		//! triangle weights
 		std::vector<mvmIndexWeight> weights;
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:mvmTransferPoint")
+#endif
 };
 
 
@@ -86,6 +100,10 @@
     std::vector<mvmTransferPoint> mVertices;
     int mNumVerts;
 
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:MeanValueMeshCoords")
+#endif
 };
 
 #endif

Modified: trunk/blender/intern/elbeem/intern/ntl_blenderdumper.h
===================================================================
--- trunk/blender/intern/elbeem/intern/ntl_blenderdumper.h	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/intern/ntl_blenderdumper.h	2013-09-27 18:55:26 UTC (rev 60399)
@@ -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 @@
 
 protected:
 
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlBlenderDumper")
+#endif
 };
 
 #define NTL_BLENDERDUMPER_H

Modified: trunk/blender/intern/elbeem/intern/ntl_bsptree.h
===================================================================
--- trunk/blender/intern/elbeem/intern/ntl_bsptree.h	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/intern/ntl_bsptree.h	2013-09-27 18:55:26 UTC (rev 60399)
@@ -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 @@
 		//! duplicated triangles, inited during subdivide 
 		int mTriDoubles; 
 
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+       MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlTree")
+#endif
 };
 
 

Modified: trunk/blender/intern/elbeem/intern/ntl_geometryclass.h
===================================================================
--- trunk/blender/intern/elbeem/intern/ntl_geometryclass.h	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/intern/ntl_geometryclass.h	2013-09-27 18:55:26 UTC (rev 60399)
@@ -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 @@
 
 	private:
 
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlGeometryClass")
+#endif
 };
 
 

Modified: trunk/blender/intern/elbeem/intern/ntl_geometrymodel.h
===================================================================
--- trunk/blender/intern/elbeem/intern/ntl_geometrymodel.h	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/intern/ntl_geometrymodel.h	2013-09-27 18:55:26 UTC (rev 60399)
@@ -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 @@
 
 		/*! 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

Modified: trunk/blender/intern/elbeem/intern/ntl_geometryobject.h
===================================================================
--- trunk/blender/intern/elbeem/intern/ntl_geometryobject.h	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/intern/ntl_geometryobject.h	2013-09-27 18:55:26 UTC (rev 60399)
@@ -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 @@
 
 	public:
 
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlGeometryObject")
+#endif
 };
 
 #endif

Modified: trunk/blender/intern/elbeem/intern/ntl_geometryshader.h
===================================================================
--- trunk/blender/intern/elbeem/intern/ntl_geometryshader.h	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/intern/ntl_geometryshader.h	2013-09-27 18:55:26 UTC (rev 60399)
@@ -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 @@
 
 		/*! surface output name for this simulation */
 		string mOutFilename; 
+
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlGeometryShader")
+#endif
 };
 
 #endif

Modified: trunk/blender/intern/elbeem/intern/ntl_lighting.h
===================================================================
--- trunk/blender/intern/elbeem/intern/ntl_lighting.h	2013-09-27 18:55:15 UTC (rev 60398)
+++ trunk/blender/intern/elbeem/intern/ntl_lighting.h	2013-09-27 18:55:26 UTC (rev 60399)
@@ -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 @@
 
 private:
 
+private:
+#ifdef WITH_CXX_GUARDEDALLOC
+	MEM_CXX_CLASS_ALLOC_FUNCS("ELBEEM:ntlLightObject")

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list