diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/lldriverparam.h | 10 | ||||
| -rw-r--r-- | indra/newview/llpolymesh.h | 10 | ||||
| -rw-r--r-- | indra/newview/llpolymorph.cpp | 60 | ||||
| -rw-r--r-- | indra/newview/llpolymorph.h | 13 | ||||
| -rw-r--r-- | indra/newview/lltexlayerparams.h | 20 | 
5 files changed, 101 insertions, 12 deletions
| diff --git a/indra/newview/lldriverparam.h b/indra/newview/lldriverparam.h index 7a4d711d4e..c0976d1d43 100644 --- a/indra/newview/lldriverparam.h +++ b/indra/newview/lldriverparam.h @@ -83,6 +83,16 @@ public:  	LLDriverParam(LLWearable *wearablep);  	~LLDriverParam(); +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	// Special: These functions are overridden by child classes  	LLDriverParamInfo*		getInfo() const { return (LLDriverParamInfo*)mInfo; }  	//   This sets mInfo and calls initialization functions diff --git a/indra/newview/llpolymesh.h b/indra/newview/llpolymesh.h index ffb11a3f7e..850171d169 100644 --- a/indra/newview/llpolymesh.h +++ b/indra/newview/llpolymesh.h @@ -406,6 +406,16 @@ public:  	LLPolySkeletalDistortion(LLVOAvatar *avatarp);  	~LLPolySkeletalDistortion(); +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	// Special: These functions are overridden by child classes  	LLPolySkeletalDistortionInfo*	getInfo() const { return (LLPolySkeletalDistortionInfo*)mInfo; }  	//   This sets mInfo and calls initialization functions diff --git a/indra/newview/llpolymorph.cpp b/indra/newview/llpolymorph.cpp index d25d1420ee..bd96608641 100644 --- a/indra/newview/llpolymorph.cpp +++ b/indra/newview/llpolymorph.cpp @@ -73,9 +73,9 @@ LLPolyMorphData::LLPolyMorphData(const LLPolyMorphData &rhs) :  {  	const S32 numVertices = mNumIndices; -	mCoords = new LLVector4a[numVertices]; -	mNormals = new LLVector4a[numVertices]; -	mBinormals = new LLVector4a[numVertices]; +	mCoords = static_cast<LLVector4a*>(ll_aligned_malloc_16(numVertices * sizeof(LLVector4a))); +	mNormals = static_cast<LLVector4a*>(ll_aligned_malloc_16(numVertices * sizeof(LLVector4a))); +	mBinormals = static_cast<LLVector4a*>(ll_aligned_malloc_16(numVertices * sizeof(LLVector4a)));  	mTexCoords = new LLVector2[numVertices];  	mVertexIndices = new U32[numVertices]; @@ -89,17 +89,12 @@ LLPolyMorphData::LLPolyMorphData(const LLPolyMorphData &rhs) :  	}  } -  //-----------------------------------------------------------------------------  // ~LLPolyMorphData()  //-----------------------------------------------------------------------------  LLPolyMorphData::~LLPolyMorphData()  { -	delete [] mVertexIndices; -	delete [] mCoords; -	delete [] mNormals; -	delete [] mBinormals; -	delete [] mTexCoords; +	freeData();  }  //----------------------------------------------------------------------------- @@ -119,11 +114,16 @@ BOOL LLPolyMorphData::loadBinary(LLFILE *fp, LLPolyMeshSharedData *mesh)  	}  	//------------------------------------------------------------------------- +	// free any existing data +	//------------------------------------------------------------------------- +	freeData(); + +	//-------------------------------------------------------------------------  	// allocate vertices  	//------------------------------------------------------------------------- -	mCoords = new LLVector4a[numVertices]; -	mNormals = new LLVector4a[numVertices]; -	mBinormals = new LLVector4a[numVertices]; +	mCoords = static_cast<LLVector4a*>(ll_aligned_malloc_16(numVertices * sizeof(LLVector4a))); +	mNormals = static_cast<LLVector4a*>(ll_aligned_malloc_16(numVertices * sizeof(LLVector4a))); +	mBinormals = static_cast<LLVector4a*>(ll_aligned_malloc_16(numVertices * sizeof(LLVector4a)));  	mTexCoords = new LLVector2[numVertices];  	// Actually, we are allocating more space than we need for the skiplist  	mVertexIndices = new U32[numVertices]; @@ -207,6 +207,42 @@ BOOL LLPolyMorphData::loadBinary(LLFILE *fp, LLPolyMeshSharedData *mesh)  }  //----------------------------------------------------------------------------- +// freeData() +//----------------------------------------------------------------------------- +void LLPolyMorphData::freeData() +{ +	if (mCoords != NULL) +	{ +		ll_aligned_free_16(mCoords); +		mCoords = NULL; +	} + +	if (mNormals != NULL) +	{ +		ll_aligned_free_16(mNormals); +		mNormals = NULL; +	} + +	if (mBinormals != NULL) +	{ +		ll_aligned_free_16(mBinormals); +		mBinormals = NULL; +	} + +	if (mTexCoords != NULL) +	{ +		delete [] mTexCoords; +		mTexCoords = NULL; +	} + +	if (mVertexIndices != NULL) +	{ +		delete [] mVertexIndices; +		mVertexIndices = NULL; +	} +} + +//-----------------------------------------------------------------------------  // LLPolyMorphTargetInfo()  //-----------------------------------------------------------------------------  LLPolyMorphTargetInfo::LLPolyMorphTargetInfo() diff --git a/indra/newview/llpolymorph.h b/indra/newview/llpolymorph.h index 46e23b7792..678599d7e1 100644 --- a/indra/newview/llpolymorph.h +++ b/indra/newview/llpolymorph.h @@ -48,6 +48,16 @@ public:  	~LLPolyMorphData();  	LLPolyMorphData(const LLPolyMorphData &rhs); +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	BOOL			loadBinary(LLFILE* fp, LLPolyMeshSharedData *mesh);  	const std::string& getName() { return mName; } @@ -67,6 +77,9 @@ public:  	F32					mMaxDistortion;		// maximum single vertex distortion in a given morph  	LLVector4a			mAvgDistortion;		// average vertex distortion, to infer directionality of the morph  	LLPolyMeshSharedData*	mMesh; + +private: +	void freeData();  };  //----------------------------------------------------------------------------- diff --git a/indra/newview/lltexlayerparams.h b/indra/newview/lltexlayerparams.h index 2c0da60b48..fffe20208f 100644 --- a/indra/newview/lltexlayerparams.h +++ b/indra/newview/lltexlayerparams.h @@ -67,6 +67,16 @@ public:  	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable = NULL) const; +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	// LLVisualParam Virtual functions  	///*virtual*/ BOOL		parseData(LLXmlTreeNode* node);  	/*virtual*/ void		apply( ESex avatar_sex ) {} @@ -143,6 +153,16 @@ public:  	LLTexLayerParamColor( LLVOAvatar* avatar );  	/* virtual */ ~LLTexLayerParamColor(); +	void* operator new(size_t size) +	{ +		return ll_aligned_malloc_16(size); +	} + +	void operator delete(void* ptr) +	{ +		ll_aligned_free_16(ptr); +	} +  	/*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable = NULL) const;  	// LLVisualParam Virtual functions | 
