diff options
| author | Dave Parks <davep@lindenlab.com> | 2012-10-02 12:11:42 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2012-10-02 12:11:42 -0500 | 
| commit | bc0abc773451d5a71f7f0b024e8d389327425446 (patch) | |
| tree | bb929b3879354503762b8d84b23210cb301e57ea | |
| parent | c69855f2333f9fb094e235b84d275d43fdeda3c3 (diff) | |
Fix up some assertions in lloctree.h
| -rw-r--r-- | indra/newview/lldrawable.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llspatialpartition.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llspatialpartition.h | 2 | 
3 files changed, 15 insertions, 3 deletions
| diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 108ec92f6d..0722e66571 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -945,6 +945,12 @@ void LLDrawable::updateUVMinMax()  void LLDrawable::setSpatialGroup(LLSpatialGroup *groupp)  { +	//precondition: mSpatialGroupp MUST be null or DEAD or mSpatialGroupp MUST NOT contain this +	llassert(!mSpatialGroupp || mSpatialGroupp->isDead() || !mSpatialGroupp->hasElement(this)); + +	//precondition: groupp MUST be null or groupp MUST contain this +	llassert(!groupp || groupp->hasElement(this)); +  /*if (mSpatialGroupp && (groupp != mSpatialGroupp))  	{  		mSpatialGroupp->setState(LLSpatialGroup::GEOM_DIRTY); @@ -1468,6 +1474,10 @@ void LLSpatialBridge::cleanupReferences()  	LLDrawable::cleanupReferences();  	if (mDrawable)  	{ +		/* +		 +		DON'T DO THIS -- this should happen through octree destruction +  		mDrawable->setSpatialGroup(NULL);  		if (mDrawable->getVObj())  		{ @@ -1482,7 +1492,7 @@ void LLSpatialBridge::cleanupReferences()  					drawable->setSpatialGroup(NULL);  				}  			} -		} +		}*/  		LLDrawable* drawablep = mDrawable;  		mDrawable = NULL; diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 45ef8f1a6d..9a6cb78333 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -1841,13 +1841,13 @@ BOOL LLSpatialPartition::remove(LLDrawable *drawablep, LLSpatialGroup *curp)  {  	LLMemType mt(LLMemType::MTYPE_SPACE_PARTITION); -	drawablep->setSpatialGroup(NULL); -  	if (!curp->removeObject(drawablep))  	{  		OCT_ERRS << "Failed to remove drawable from octree!" << llendl;  	} +	drawablep->setSpatialGroup(NULL); +  	assert_octree_valid(mOctree);  	return TRUE; diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index 7968c28900..d3cda2ff6a 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -346,6 +346,8 @@ public:  	void dirtyGeom() { setState(GEOM_DIRTY); }  	void dirtyMesh() { setState(MESH_DIRTY); }  	element_list& getData() { return mOctreeNode->getData(); } +	bool hasElement(LLDrawable* drawablep) { return mOctreeNode->getData().find(drawablep) != mOctreeNode->getData().end(); } +  	U32 getElementCount() const { return mOctreeNode->getElementCount(); }  	void drawObjectBox(LLColor4 col); | 
