diff options
| -rw-r--r-- | indra/newview/llvovolume.cpp | 22 | ||||
| -rw-r--r-- | indra/newview/llvovolume.h | 1 | 
2 files changed, 23 insertions, 0 deletions
| diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index e5531a1497..8bfbfcb9c3 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -183,6 +183,22 @@ LLVOVolume::~LLVOVolume()  	}  } +void LLVOVolume::markDead() +{ +	if (!mDead) +	{ +		// TODO: tell LLMediaDataClient to remove this object from its queue +		 +		// Detach all media impls from this object +		for(U32 i = 0 ; i < mMediaImplList.size() ; i++) +		{ +			removeMediaImpl(i); +		} +	} +	 +	LLViewerObject::markDead(); +} +  // static  void LLVOVolume::initClass() @@ -1708,6 +1724,12 @@ void LLVOVolume::updateObjectMediaData(const LLSD &media_data_array)  void LLVOVolume::syncMediaData(S32 texture_index, const LLSD &media_data, bool merge, bool ignore_agent)  { +	if(mDead) +	{ +		// If the object has been marked dead, don't process media updates. +		return; +	} +	  	LLTextureEntry *te = getTE(texture_index);  	//llinfos << "BEFORE: texture_index = " << texture_index  	//	<< " hasMedia = " << te->hasMedia() << " : "  diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index fb543efc04..70d203daf2 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -100,6 +100,7 @@ public:  public:  						LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *regionp); +	/*virtual*/ void markDead();		// Override (and call through to parent) to clean up media references  	/*virtual*/ LLDrawable* createDrawable(LLPipeline *pipeline); | 
