merge changes for 3.4.2-beta4
commit
0e13bf5f9e
2
.hgtags
2
.hgtags
|
|
@ -356,3 +356,5 @@ e664473c16df1d82ffaff382e7b3e023da202d52 3.4.2-beta2
|
|||
2aa72e3372a83dece4df9cf72fb1e7c34f90b5e3 DRTVWR-209
|
||||
f7bedce18ad52283e6072814db23318907261487 DRTVWR-238
|
||||
7b64c96fbcadf360bd2feaae19d330166b70877c DRTVWR-210
|
||||
e9a5886052433d5db9e504ffaca10890f9932979 DRTVWR-243
|
||||
73b84b9864dc650fe7c8fc9f52361450f0849004 3.4.2-beta4
|
||||
|
|
|
|||
|
|
@ -96,6 +96,18 @@ LLVolumeImplFlexible::~LLVolumeImplFlexible()
|
|||
//static
|
||||
void LLVolumeImplFlexible::updateClass()
|
||||
{
|
||||
// XXX stinson 11/13/2012 : This hack removes the optimization for limiting the number of flexi-prims
|
||||
// updated. With the optimization, flexi-prims attached to the users avatar were not being
|
||||
// animated correctly immediately following teleport. With the optimization removed, the bug went away.
|
||||
#define XXX_STINSON_MAINT_1890_HACK_FIX 1
|
||||
#if XXX_STINSON_MAINT_1890_HACK_FIX
|
||||
for (std::vector<LLVolumeImplFlexible*>::iterator iter = sInstanceList.begin();
|
||||
iter != sInstanceList.end();
|
||||
++iter)
|
||||
{
|
||||
(*iter)->doIdleUpdate();
|
||||
}
|
||||
#else // XXX_STINSON_MAINT_1890_HACK_FIX
|
||||
std::vector<S32>::iterator delay_iter = sUpdateDelay.begin();
|
||||
|
||||
for (std::vector<LLVolumeImplFlexible*>::iterator iter = sInstanceList.begin();
|
||||
|
|
@ -109,6 +121,7 @@ void LLVolumeImplFlexible::updateClass()
|
|||
}
|
||||
++delay_iter;
|
||||
}
|
||||
#endif // XXX_STINSON_MAINT_1890_HACK_FIX
|
||||
}
|
||||
|
||||
LLVector3 LLVolumeImplFlexible::getFramePosition() const
|
||||
|
|
@ -431,6 +444,15 @@ void LLVolumeImplFlexible::doFlexibleUpdate()
|
|||
//the object is not visible
|
||||
return ;
|
||||
}
|
||||
|
||||
// stinson 11/12/2012: Need to check with davep on the following.
|
||||
// Skipping the flexible update if render res is negative. If we were to continue with a negative value,
|
||||
// the subsequent S32 num_render_sections = 1<<mRenderRes; code will specify a really large number of
|
||||
// render sections which will then create a length exception in the std::vector::resize() method.
|
||||
if (mRenderRes < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
S32 num_sections = 1 << mSimulateRes;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue