From 5979467198e9a8d4c065de908cf48c7d73101cd7 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Wed, 20 Nov 2013 11:43:09 -0700 Subject: revert changeset 05606ef22574: fix for SH-4629: Interesting: crash at LLViewerRegion::killObject --- indra/newview/llviewerregion.cpp | 32 -------------------------------- indra/newview/llviewerregion.h | 1 - 2 files changed, 33 deletions(-) diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index f71d0a7a64..2eb065c1ef 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -923,21 +923,6 @@ void LLViewerRegion::addActiveCacheEntry(LLVOCacheEntry* entry) mImpl->mActiveSet.insert(entry); } -//remove vo entry which is in mImpl->mActiveSet but not in rendering pipeline. -//this is caused by mImpl->mActiveSet failing to remove this entry somehow. -void LLViewerRegion::removeDanglingEntry(LLVOCacheEntry* entry) -{ - if(mDead || !entry) - { - return; - } - - mImpl->mVisibleEntries.erase(entry); - mImpl->mActiveSet.erase(entry); - mImpl->mWaitingSet.erase(entry); - entry->setState(LLVOCacheEntry::INACTIVE); -} - void LLViewerRegion::removeActiveCacheEntry(LLVOCacheEntry* entry, LLDrawable* drawablep) { if(mDead || !entry) @@ -1418,8 +1403,6 @@ void LLViewerRegion::killInvisibleObjects(F32 max_time) } std::vector delete_list; - std::vector dangling_list; - S32 update_counter = llmin(max_update, mImpl->mActiveSet.size()); LLVOCacheEntry::vocache_entry_set_t::iterator iter = mImpl->mActiveSet.upper_bound(mLastVisitedEntry); @@ -1435,13 +1418,6 @@ void LLViewerRegion::killInvisibleObjects(F32 max_time) } LLVOCacheEntry* vo_entry = *iter; - if(!vo_entry->getEntry() || !vo_entry->getEntry()->getDrawable()) - { - //sometimes mImpl->mActiveSet fails to erase some entry, causing this dangling case. - dangling_list.push_back(vo_entry); - continue; - } - if(!vo_entry->isAnyVisible(camera_origin, local_origin, back_threshold) && vo_entry->mLastCameraUpdated < sLastCameraUpdated) { killObject(vo_entry, delete_list); @@ -1474,14 +1450,6 @@ void LLViewerRegion::killInvisibleObjects(F32 max_time) delete_list.clear(); } - if(!dangling_list.empty()) - { - for(S32 i = 0; i < dangling_list.size(); i++) - { - removeDanglingEntry(dangling_list[i]); - } - } - return; } diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index 6889db7880..a789cc6715 100755 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -386,7 +386,6 @@ private: void removeFromVOCacheTree(LLVOCacheEntry* entry); void replaceVisibleCacheEntry(LLVOCacheEntry* old_entry, LLVOCacheEntry* new_entry); void killCacheEntry(LLVOCacheEntry* entry); //physically delete the cache entry - void removeDanglingEntry(LLVOCacheEntry* entry); void killInvisibleObjects(F32 max_time); void createVisibleObjects(F32 max_time); void updateVisibleEntries(F32 max_time); //update visible entries -- cgit v1.2.3