summaryrefslogtreecommitdiff
path: root/indra/newview/pipeline.cpp
diff options
context:
space:
mode:
authorWilliam Todd Stinson <stinson@lindenlab.com>2012-11-19 11:24:57 -0800
committerWilliam Todd Stinson <stinson@lindenlab.com>2012-11-19 11:24:57 -0800
commitf50b58a11b54d19a7a3f54d8bfd77fb5ce13b6f3 (patch)
tree5f2e26da4b949547a124aa3d088316b5deeca322 /indra/newview/pipeline.cpp
parentd7b55d0fa7f7f00a3811e62a9874999e9e0d0a8a (diff)
parent185169cbbecebe2a35dbd937d6fb4e0a30fa1832 (diff)
Pull and merge from https://bitbucket.org/lindenlab/viewer-development.
Diffstat (limited to 'indra/newview/pipeline.cpp')
-rw-r--r--indra/newview/pipeline.cpp39
1 files changed, 36 insertions, 3 deletions
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 91dd441319..ea2dc60b07 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -2578,26 +2578,59 @@ static LLFastTimer::DeclareTimer FTM_REBUILD_PRIORITY_GROUPS("Rebuild Priority G
void LLPipeline::clearRebuildGroups()
{
+ LLSpatialGroup::sg_vector_t hudGroups;
+
mGroupQ1Locked = true;
// Iterate through all drawables on the priority build queue,
for (LLSpatialGroup::sg_vector_t::iterator iter = mGroupQ1.begin();
iter != mGroupQ1.end(); ++iter)
{
LLSpatialGroup* group = *iter;
- group->clearState(LLSpatialGroup::IN_BUILD_Q1);
+
+ // If the group contains HUD objects, save the group
+ if (group->isHUDGroup())
+ {
+ hudGroups.push_back(group);
+ }
+ // Else, no HUD objects so clear the build state
+ else
+ {
+ group->clearState(LLSpatialGroup::IN_BUILD_Q1);
+ }
}
+
+ // Clear the group
mGroupQ1.clear();
+
+ // Copy the saved HUD groups back in
+ mGroupQ1.assign(hudGroups.begin(), hudGroups.end());
mGroupQ1Locked = false;
+ // Clear the HUD groups
+ hudGroups.clear();
+
mGroupQ2Locked = true;
for (LLSpatialGroup::sg_vector_t::iterator iter = mGroupQ2.begin();
iter != mGroupQ2.end(); ++iter)
{
LLSpatialGroup* group = *iter;
- group->clearState(LLSpatialGroup::IN_BUILD_Q2);
- }
+ // If the group contains HUD objects, save the group
+ if (group->isHUDGroup())
+ {
+ hudGroups.push_back(group);
+ }
+ // Else, no HUD objects so clear the build state
+ else
+ {
+ group->clearState(LLSpatialGroup::IN_BUILD_Q2);
+ }
+ }
+ // Clear the group
mGroupQ2.clear();
+
+ // Copy the saved HUD groups back in
+ mGroupQ2.assign(hudGroups.begin(), hudGroups.end());
mGroupQ2Locked = false;
}