summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rwxr-xr-xindra/newview/llviewerregion.cpp3
-rwxr-xr-xindra/newview/llvocache.cpp4
-rwxr-xr-xindra/newview/llvocache.h2
3 files changed, 6 insertions, 3 deletions
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index db91b5cd8b..0ad4402dcc 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -2096,6 +2096,9 @@ LLViewerRegion::eCacheUpdateResult LLViewerRegion::cacheFullUpdate(LLDataPackerB
}
else //invisible
{
+ //copy some contents from old entry
+ entry->moveTo(new_entry, true);
+
//remove old entry
killCacheEntry(entry);
entry = new_entry;
diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp
index f16f3507c3..89a49ff1ed 100755
--- a/indra/newview/llvocache.cpp
+++ b/indra/newview/llvocache.cpp
@@ -191,10 +191,10 @@ void LLVOCacheEntry::setOctreeEntry(LLViewerOctreeEntry* entry)
LLViewerOctreeEntryData::setOctreeEntry(entry);
}
-void LLVOCacheEntry::moveTo(LLVOCacheEntry* new_entry)
+void LLVOCacheEntry::moveTo(LLVOCacheEntry* new_entry, bool no_entry_move)
{
//copy LLViewerOctreeEntry
- if(mEntry.notNull())
+ if(mEntry.notNull() && !no_entry_move)
{
new_entry->setOctreeEntry(mEntry);
mEntry = NULL;
diff --git a/indra/newview/llvocache.h b/indra/newview/llvocache.h
index eef364dd5d..21b30f5373 100755
--- a/indra/newview/llvocache.h
+++ b/indra/newview/llvocache.h
@@ -103,7 +103,7 @@ public:
void recordHit();
void recordDupe() { mDupeCount++; }
- void moveTo(LLVOCacheEntry* new_entry); //copy variables
+ void moveTo(LLVOCacheEntry* new_entry, bool no_entry_move = false); //copy variables
/*virtual*/ void setOctreeEntry(LLViewerOctreeEntry* entry);
void setParentID(U32 id) {mParentID = id;}