summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llvovolume.cpp22
-rw-r--r--indra/newview/llvovolume.h1
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);