From fc6cd5954b94aa3b49a88b5d8192607c432cd54b Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Thu, 31 Oct 2013 16:13:29 -0600 Subject: 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 --- indra/newview/llviewerregion.cpp | 28 ++++++++++++++++------------ 1 file 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& 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); } } -- cgit v1.2.3