From 8562fae08b8357a96b15a819e6c2b1513e031c99 Mon Sep 17 00:00:00 2001 From: Shyotl Date: Thu, 19 May 2011 22:38:51 -0500 Subject: [PATCH] LLPipeline::rebuildGroups() optimized a bit. --- indra/newview/pipeline.cpp | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 3ca7dee0b..6732036f6 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -1816,6 +1816,11 @@ void LLPipeline::rebuildPriorityGroups() void LLPipeline::rebuildGroups() { + if (mGroupQ2.empty()) + { + return; + } + // Iterate through some drawables on the non-priority build queue S32 size = (S32) mGroupQ2.size(); S32 min_count = llclamp((S32) ((F32) (size * size)/4096*0.25f), 1, size); @@ -1825,33 +1830,28 @@ void LLPipeline::rebuildGroups() std::sort(mGroupQ2.begin(), mGroupQ2.end(), LLSpatialGroup::CompareUpdateUrgency()); LLSpatialGroup::sg_vector_t::iterator iter; + LLSpatialGroup::sg_vector_t::iterator last_iter = mGroupQ2.begin(); + for (iter = mGroupQ2.begin(); - iter != mGroupQ2.end(); ++iter) + iter != mGroupQ2.end() && count <= min_count; ++iter) { LLSpatialGroup* group = *iter; + last_iter = iter; - if (group->isDead()) + if (!group->isDead()) { - continue; - } - - group->rebuildGeom(); - - if (group->mSpatialPartition->mRenderByGroup) - { - count++; - } + group->rebuildGeom(); - group->clearState(LLSpatialGroup::IN_BUILD_Q2); - - if (count > min_count) - { - ++iter; - break; + if (group->mSpatialPartition->mRenderByGroup) + { + count++; + } } + + group->clearState(LLSpatialGroup::IN_BUILD_Q2); } - mGroupQ2.erase(mGroupQ2.begin(), iter); + mGroupQ2.erase(mGroupQ2.begin(), ++last_iter); updateMovedList(mMovedBridge); }