summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiaohong Bao <bao@lindenlab.com>2013-10-31 16:13:29 -0600
committerXiaohong Bao <bao@lindenlab.com>2013-10-31 16:13:29 -0600
commitfc6cd5954b94aa3b49a88b5d8192607c432cd54b (patch)
treef699ee331374ca2ff7f40d48b153228926df014b
parentccb921b287b14129918c07072f57078c69ca7e65 (diff)
fix for SH-4599: Interesting: objects flicker between LODs while you alt-zoom
and SH-4598: Interesting: objects near the edge of the screen flicker
-rwxr-xr-xindra/newview/llviewerregion.cpp28
1 files changed, 16 insertions, 12 deletions
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index b3837a41fe..f549f6740d 100755
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1435,18 +1435,22 @@ void LLViewerRegion::killObject(LLVOCacheEntry* entry, std::vector<LLDrawable*>&
if(!drawablep->getParent())
{
- //LLViewerObject::const_child_list_t& child_list = drawablep->getVObj()->getChildren();
- //for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin();
- // iter != child_list.end(); iter++)
- //{
- // LLViewerObject* child = *iter;
- // if(child->mDrawable->isRecentlyVisible())
- // {
- // //set the parent group visible if any of its children visible.
- // ((LLViewerOctreeEntryData*)drawablep)->setVisible();
- // return;
- // }
- //}
+ LLViewerObject::const_child_list_t& child_list = drawablep->getVObj()->getChildren();
+ for (LLViewerObject::child_list_t::const_iterator iter = child_list.begin();
+ iter != child_list.end(); iter++)
+ {
+ LLViewerObject* child = *iter;
+ if(child->mDrawable)
+ {
+ LLOcclusionCullingGroup* group = (LLOcclusionCullingGroup*)child->mDrawable->getGroup();
+ if(group && group->isAnyRecentlyVisible())
+ {
+ //set the parent group visible if any of its children visible.
+ ((LLViewerOctreeEntryData*)drawablep)->setVisible();
+ return;
+ }
+ }
+ }
delete_list.push_back(drawablep);
}
}