SNOW-684 VWR-4232 : Some particles don't disappear when UI is hidden

master
Merov Linden 2010-08-31 21:34:02 -07:00
parent be07498847
commit 6d8208bac9
8 changed files with 53 additions and 4 deletions

View File

@ -402,6 +402,7 @@ Michelle2 Zenovka
Mm Alder
VWR-197
VWR-3777
VWR-4232
VWR-4794
VWR-13578
Mr Greggan

View File

@ -305,6 +305,11 @@ void LLHUDEffectBeam::render()
}
}
void LLHUDEffectBeam::renderForTimer()
{
render();
}
void LLHUDEffectBeam::setupParticle(const S32 i)
{
LLVector3d start_pos_global;

View File

@ -52,6 +52,7 @@ protected:
~LLHUDEffectBeam();
/*virtual*/ void render();
/*virtual*/ void renderForTimer();
/*virtual*/ void packData(LLMessageSystem *mesgsys);
/*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum);
private:

View File

@ -280,3 +280,8 @@ void LLHUDEffectSpiral::render()
return;
}
}
void LLHUDEffectSpiral::renderForTimer()
{
render();
}

View File

@ -62,6 +62,7 @@ protected:
~LLHUDEffectSpiral();
/*virtual*/ void render();
/*virtual*/ void renderForTimer();
/*virtual*/ void packData(LLMessageSystem *mesgsys);
/*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum);
private:

View File

@ -304,6 +304,27 @@ void LLHUDObject::renderAllForSelect()
}
}
// static
void LLHUDObject::renderAllForTimer()
{
LLHUDObject *hud_objp;
hud_object_list_t::iterator object_it;
for (object_it = sHUDObjects.begin(); object_it != sHUDObjects.end(); )
{
hud_object_list_t::iterator cur_it = object_it++;
hud_objp = (*cur_it);
if (hud_objp->getNumRefs() == 1)
{
sHUDObjects.erase(cur_it);
}
else if (hud_objp->isVisible())
{
hud_objp->renderForTimer();
}
}
}
// static
void LLHUDObject::sortObjects()
{

View File

@ -69,6 +69,7 @@ public:
static void updateAll();
static void renderAll();
static void renderAllForSelect();
static void renderAllForTimer();
static void cleanupHUDObjects();
@ -100,6 +101,7 @@ protected:
virtual void render() = 0;
virtual void renderForSelect() {};
virtual void renderForTimer() {};
protected:
U8 mType;

View File

@ -3211,11 +3211,24 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
LLVertexBuffer::unbind();
if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred && gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred)
{
// Render debugging beacons.
gObjectList.renderObjectBeacons();
gObjectList.resetObjectBeacons();
if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI))
{
// Render debugging beacons.
gObjectList.renderObjectBeacons();
gObjectList.resetObjectBeacons();
}
else
{
// Make sure particle effects disappear
LLHUDObject::renderAllForTimer();
}
}
else
{
// Make sure particle effects disappear
LLHUDObject::renderAllForTimer();
}
LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomEnd");