fix for SH-4659:crash at LLOcclusionCullingGroup::doOcclusion line 1150
parent
6a11332552
commit
87f852ee67
|
|
@ -980,13 +980,15 @@ void LLViewerRegion::addToVOCacheTree(LLVOCacheEntry* entry)
|
|||
if(entry->hasState(LLVOCacheEntry::IN_VO_TREE))
|
||||
{
|
||||
return; //already in the tree.
|
||||
}
|
||||
entry->setState(LLVOCacheEntry::IN_VO_TREE);
|
||||
}
|
||||
|
||||
llassert_always(!entry->getGroup()); //not in octree.
|
||||
llassert(!entry->getEntry()->hasDrawable()); //not have drawables
|
||||
|
||||
mImpl->mVOCachePartition->addEntry(entry->getEntry());
|
||||
if(mImpl->mVOCachePartition->addEntry(entry->getEntry()))
|
||||
{
|
||||
entry->setState(LLVOCacheEntry::IN_VO_TREE);
|
||||
}
|
||||
}
|
||||
|
||||
void LLViewerRegion::removeFromVOCacheTree(LLVOCacheEntry* entry)
|
||||
|
|
|
|||
|
|
@ -609,11 +609,18 @@ LLVOCachePartition::LLVOCachePartition(LLViewerRegion* regionp)
|
|||
new LLVOCacheGroup(mOctree, this);
|
||||
}
|
||||
|
||||
void LLVOCachePartition::addEntry(LLViewerOctreeEntry* entry)
|
||||
bool LLVOCachePartition::addEntry(LLViewerOctreeEntry* entry)
|
||||
{
|
||||
llassert(entry->hasVOCacheEntry());
|
||||
|
||||
if(!llfinite(entry->getBinRadius()) || !entry->getPositionGroup().isFinite3())
|
||||
{
|
||||
return false; //data corrupted
|
||||
}
|
||||
|
||||
mOctree->insert(entry);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void LLVOCachePartition::removeEntry(LLViewerOctreeEntry* entry)
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ class LLVOCachePartition : public LLViewerOctreePartition, public LLTrace::MemTr
|
|||
public:
|
||||
LLVOCachePartition(LLViewerRegion* regionp);
|
||||
|
||||
void addEntry(LLViewerOctreeEntry* entry);
|
||||
bool addEntry(LLViewerOctreeEntry* entry);
|
||||
void removeEntry(LLViewerOctreeEntry* entry);
|
||||
/*virtual*/ S32 cull(LLCamera &camera, bool do_occlusion);
|
||||
void addOccluders(LLViewerOctreeGroup* gp);
|
||||
|
|
|
|||
|
|
@ -2786,7 +2786,8 @@ void LLPipeline::doOcclusion(LLCamera& camera, LLRenderTarget& source, LLRenderT
|
|||
|
||||
void LLPipeline::doOcclusion(LLCamera& camera)
|
||||
{
|
||||
if (LLPipeline::sUseOcclusion > 1 && (sCull->hasOcclusionGroups() || LLVOCachePartition::sNeedsOcclusionCheck))
|
||||
if (LLPipeline::sUseOcclusion > 1 && !LLSpatialPartition::sTeleportRequested &&
|
||||
(sCull->hasOcclusionGroups() || LLVOCachePartition::sNeedsOcclusionCheck))
|
||||
{
|
||||
LLVertexBuffer::unbind();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue