summaryrefslogtreecommitdiff
path: root/indra/newview/llflexibleobject.cpp
diff options
context:
space:
mode:
authorSimon Linden <simon@lindenlab.com>2013-03-19 16:20:53 -0700
committerSimon Linden <simon@lindenlab.com>2013-03-19 16:20:53 -0700
commitd5561a1ada5cf171c8e281e910a7e989496c3705 (patch)
tree456cbb2374242d5508cc13165c876cd0672f6cd0 /indra/newview/llflexibleobject.cpp
parenta8245c51b9cd6fac1d26932dbb1fcf052f00da18 (diff)
parent04e78ce4fdd3bbc0e4daa1daabbff2de1c425601 (diff)
Merge in viewer-beta to get CHUI code
Diffstat (limited to 'indra/newview/llflexibleobject.cpp')
-rw-r--r--indra/newview/llflexibleobject.cpp33
1 files changed, 21 insertions, 12 deletions
diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp
index cd4718381b..fb1a8549a9 100644
--- a/indra/newview/llflexibleobject.cpp
+++ b/indra/newview/llflexibleobject.cpp
@@ -342,10 +342,10 @@ void LLVolumeImplFlexible::doIdleUpdate()
if (drawablep)
{
//LLFastTimer ftm(FTM_FLEXIBLE_UPDATE);
-
+
//ensure drawable is active
drawablep->makeActive();
-
+
if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FLEXIBLE))
{
bool visible = drawablep->isVisible();
@@ -381,21 +381,31 @@ void LLVolumeImplFlexible::doIdleUpdate()
id = parent->getVolumeInterfaceID();
}
- if ((LLDrawable::getCurrentFrame()+id)%update_period == 0)
- {
+ if (mVO->isRootEdit())
+ {
+ id = mID;
+ }
+ else
+ {
+ LLVOVolume* parent = (LLVOVolume*) mVO->getParent();
+ id = parent->getVolumeInterfaceID();
+ }
+
+ if ((LLDrawable::getCurrentFrame()+id)%update_period == 0)
+ {
sUpdateDelay[mInstanceIndex] = (S32) update_period-1;
- updateRenderRes();
+ updateRenderRes();
- gPipeline.markRebuild(drawablep, LLDrawable::REBUILD_POSITION, FALSE);
- }
- }
+ gPipeline.markRebuild(drawablep, LLDrawable::REBUILD_POSITION, FALSE);
}
+ }
+ }
else
{
sUpdateDelay[mInstanceIndex] = (S32) update_period;
- }
- }
+ }
+}
}
}
@@ -420,7 +430,6 @@ void LLVolumeImplFlexible::doFlexibleUpdate()
if ((mSimulateRes == 0 || !mInitialized) && mVO->mDrawable->isVisible())
{
BOOL force_update = mSimulateRes == 0 ? TRUE : FALSE;
-
doIdleUpdate();
if (!force_update || !gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_FLEXIBLE))
@@ -435,7 +444,7 @@ void LLVolumeImplFlexible::doFlexibleUpdate()
return ;
}
- // stinson 11/12/2012: Need to check with davep on the following.
+ // Fix for MAINT-1894
// 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.