diff options
Diffstat (limited to 'indra')
-rwxr-xr-x | indra/newview/llviewerregion.cpp | 3 | ||||
-rwxr-xr-x | indra/newview/llvocache.cpp | 4 | ||||
-rwxr-xr-x | indra/newview/llvocache.h | 2 |
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;} |