diff options
author | Xiaohong Bao <bao@lindenlab.com> | 2013-11-22 20:55:57 -0700 |
---|---|---|
committer | Xiaohong Bao <bao@lindenlab.com> | 2013-11-22 20:55:57 -0700 |
commit | 04aece3282025ed0f117a9ade96edc0bf906b3cf (patch) | |
tree | 5ef06f17145996b8180460b617f0bc13f2caa99f | |
parent | 0954d4f5d563740d0425fb9e8d118a95a34bd283 (diff) |
fix for SH-4635: Interesting: Some objects do not load on the second visit
-rwxr-xr-x | indra/newview/llviewerregion.cpp | 21 | ||||
-rwxr-xr-x | 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<LLDrawable*>& 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 |