MAINT-1891: FIX Updating the LLPipeline::clearRebuildGroups() to preserve HUD groups. clearRebuildGroups() is called during the teleport process. In the previous state, HUD objects were being incorrectly removed from the rebuild groups during the teleport process. This change will preserve HUD groups and should resolve this issue.
parent
c137b645b6
commit
3d21b2302b
|
|
@ -2577,26 +2577,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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue