diff options
author | Xiaohong Bao <bao@lindenlab.com> | 2013-10-31 16:13:29 -0600 |
---|---|---|
committer | Xiaohong Bao <bao@lindenlab.com> | 2013-10-31 16:13:29 -0600 |
commit | fc6cd5954b94aa3b49a88b5d8192607c432cd54b (patch) | |
tree | f699ee331374ca2ff7f40d48b153228926df014b | |
parent | ccb921b287b14129918c07072f57078c69ca7e65 (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-x | indra/newview/llviewerregion.cpp | 28 |
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); } } |