From 04aece3282025ed0f117a9ade96edc0bf906b3cf Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Fri, 22 Nov 2013 20:55:57 -0700 Subject: fix for SH-4635: Interesting: Some objects do not load on the second visit --- indra/newview/llviewerregion.cpp | 21 ++++----------------- indra/newview/llviewerregion.h | 4 ++-- 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index bcb7943d7f..939c6dbed1 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -847,7 +847,7 @@ void LLViewerRegion::replaceVisibleCacheEntry(LLVOCacheEntry* old_entry, LLVOCac } //physically delete the cache entry -void LLViewerRegion::killCacheEntry(LLVOCacheEntry* entry, bool kill_obj) +void LLViewerRegion::killCacheEntry(LLVOCacheEntry* entry) { if(!entry) { @@ -857,14 +857,6 @@ void LLViewerRegion::killCacheEntry(LLVOCacheEntry* entry, bool kill_obj) //remove from active list and waiting list if(entry->isState(LLVOCacheEntry::ACTIVE)) { - if(kill_obj && entry->getEntry()) - { - LLDrawable* drawablep = (LLDrawable*)entry->getEntry()->getDrawable(); - if(drawablep) - { - gObjectList.killObject(drawablep->getVObj()); - } - } mImpl->mActiveSet.erase(entry); } else @@ -894,20 +886,15 @@ void LLViewerRegion::killCacheEntry(LLVOCacheEntry* entry, bool kill_obj) { entry->removeAllChildren(); } - - if(kill_obj) - { - entry->setState(LLVOCacheEntry::INACTIVE); - } //remove from mCacheMap, real deletion mImpl->mCacheMap.erase(entry->getLocalID()); } //physically delete the cache entry -void LLViewerRegion::killCacheEntry(U32 local_id, bool kill_obj) +void LLViewerRegion::killCacheEntry(U32 local_id) { - killCacheEntry(getCacheEntry(local_id), kill_obj); + killCacheEntry(getCacheEntry(local_id)); } U32 LLViewerRegion::getNumOfActiveCachedObjects() const @@ -2063,7 +2050,7 @@ void LLViewerRegion::decodeBoundingInfo(LLVOCacheEntry* entry) if(obj) { //remove from old region - old_regionp->killCacheEntry(obj->getLocalID(), false); + old_regionp->killCacheEntry(obj->getLocalID()); //change region obj->setRegion(this); diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index 0f27def8a5..a789cc6715 100755 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -235,7 +235,7 @@ public: void addVisibleCacheEntry(LLVOCacheEntry* entry); void addActiveCacheEntry(LLVOCacheEntry* entry); void removeActiveCacheEntry(LLVOCacheEntry* entry, LLDrawable* drawablep); - void killCacheEntry(U32 local_id, bool kill_obj = true); //physically delete the cache entry + void killCacheEntry(U32 local_id); //physically delete the cache entry // Like idleUpdate, but forces everything to complete regardless of // how long it takes. @@ -385,7 +385,7 @@ private: void killObject(LLVOCacheEntry* entry, std::vector& delete_list); void removeFromVOCacheTree(LLVOCacheEntry* entry); void replaceVisibleCacheEntry(LLVOCacheEntry* old_entry, LLVOCacheEntry* new_entry); - void killCacheEntry(LLVOCacheEntry* entry, bool kill_obj = true); //physically delete the cache entry + void killCacheEntry(LLVOCacheEntry* entry); //physically delete the cache entry void killInvisibleObjects(F32 max_time); void createVisibleObjects(F32 max_time); void updateVisibleEntries(F32 max_time); //update visible entries -- cgit v1.2.3