diff options
author | Xiaohong Bao <bao@lindenlab.com> | 2013-06-10 22:43:29 -0600 |
---|---|---|
committer | Xiaohong Bao <bao@lindenlab.com> | 2013-06-10 22:43:29 -0600 |
commit | 427490edb566edf18da0b879f9d30a04dda0e9e0 (patch) | |
tree | 9e8333fcaf19fb3b6aef18366d7aa80d1f7479b8 | |
parent | ebf35d51b14f224c36a19a453a20885e667f6bec (diff) |
possible fix and new debug code for SH-4241: viewer crash shortly after login in LLViewerRegion::addNewObject
-rwxr-xr-x | indra/newview/lldrawable.cpp | 4 | ||||
-rwxr-xr-x | indra/newview/llviewerregion.cpp | 15 |
2 files changed, 16 insertions, 3 deletions
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index 93fb484f06..598b0d2ff4 100755 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -133,7 +133,9 @@ void LLDrawable::init(bool new_entry) getRegion()->addVisibleCacheEntry(vo_entry); //to load all children. } - getRegion()->addActiveCacheEntry(vo_entry); + getRegion()->addActiveCacheEntry(vo_entry); + + llassert_always(!vo_entry->getGroup()); //not in the object cache octree. } llassert(!vo_entry || vo_entry->getEntry() == mEntry); diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 55137168ee..29528a1117 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -953,6 +953,8 @@ void LLViewerRegion::addToVOCacheTree(LLVOCacheEntry* entry) { return; } + + llassert_always(!entry->getParentID() && !entry->getEntry()->hasDrawable()); mImpl->mVOCachePartition->addEntry(entry->getEntry()); } @@ -993,6 +995,11 @@ void LLViewerRegion::addVisibleCacheEntry(LLVOCacheEntry* entry) F32 LLViewerRegion::updateVisibleEntries(F32 max_time) { + if(mDead) + { + return max_time; + } + if(mImpl->mVisibleGroups.empty() && mImpl->mVisibleEntries.empty()) { return max_time; @@ -1100,6 +1107,10 @@ F32 LLViewerRegion::updateVisibleEntries(F32 max_time) F32 LLViewerRegion::createVisibleObjects(F32 max_time) { + if(mDead) + { + return max_time; + } if(mImpl->mWaitingList.empty()) { return max_time; @@ -1120,8 +1131,7 @@ F32 LLViewerRegion::createVisibleObjects(F32 max_time) break; } } - } - mImpl->mWaitingList.clear(); + } return max_time - update_timer.getElapsedTimeF32(); } @@ -1156,6 +1166,7 @@ BOOL LLViewerRegion::idleUpdate(F32 max_update_time) max_update_time = updateVisibleEntries(max_update_time); createVisibleObjects(max_update_time); + mImpl->mWaitingList.clear(); mImpl->mVisibleGroups.clear(); return did_update; |