diff --git a/doc/contributions.txt b/doc/contributions.txt index 151243e2dc02b326f5be15f77f229e12b73e5773..1f374f204a3dab1dbb981f2a8ac576879add7150 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -402,6 +402,7 @@ Michelle2 Zenovka Mm Alder VWR-197 VWR-3777 + VWR-4232 VWR-4794 VWR-13578 Mr Greggan diff --git a/indra/newview/llhudeffectbeam.cpp b/indra/newview/llhudeffectbeam.cpp index 078ccff2d0f54b96b520fa37595546c610d7e91a..37b7b2e75dc6abe3b0139c1ed17f7878a0b7ded9 100644 --- a/indra/newview/llhudeffectbeam.cpp +++ b/indra/newview/llhudeffectbeam.cpp @@ -305,6 +305,11 @@ void LLHUDEffectBeam::render() } } +void LLHUDEffectBeam::renderForTimer() +{ + render(); +} + void LLHUDEffectBeam::setupParticle(const S32 i) { LLVector3d start_pos_global; diff --git a/indra/newview/llhudeffectbeam.h b/indra/newview/llhudeffectbeam.h index a700e4e6578a132983c455810b44883b0c4dfd27..fdee5178af266059a04c808d8bddfab8c78bbb81 100644 --- a/indra/newview/llhudeffectbeam.h +++ b/indra/newview/llhudeffectbeam.h @@ -52,6 +52,7 @@ class LLHUDEffectBeam : public LLHUDEffect ~LLHUDEffectBeam(); /*virtual*/ void render(); + /*virtual*/ void renderForTimer(); /*virtual*/ void packData(LLMessageSystem *mesgsys); /*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum); private: diff --git a/indra/newview/llhudeffecttrail.cpp b/indra/newview/llhudeffecttrail.cpp index 9072707974053e2e11d5f14df6acc61287bf89db..39b526c1b5a652fc4ed9e6a8b78720dda872db62 100644 --- a/indra/newview/llhudeffecttrail.cpp +++ b/indra/newview/llhudeffecttrail.cpp @@ -280,3 +280,8 @@ void LLHUDEffectSpiral::render() return; } } + +void LLHUDEffectSpiral::renderForTimer() +{ + render(); +} diff --git a/indra/newview/llhudeffecttrail.h b/indra/newview/llhudeffecttrail.h index bade3ff997f0e031c26e3a8a53c0d1b11472bdc6..6f5a328c6364e4305698518a62215dec4a1960d9 100644 --- a/indra/newview/llhudeffecttrail.h +++ b/indra/newview/llhudeffecttrail.h @@ -62,6 +62,7 @@ class LLHUDEffectSpiral : public LLHUDEffect ~LLHUDEffectSpiral(); /*virtual*/ void render(); + /*virtual*/ void renderForTimer(); /*virtual*/ void packData(LLMessageSystem *mesgsys); /*virtual*/ void unpackData(LLMessageSystem *mesgsys, S32 blocknum); private: diff --git a/indra/newview/llhudobject.cpp b/indra/newview/llhudobject.cpp index 6af0ae2b6a14b804075aa74d98cf21d0ec8415d7..3e814a0773efbd06c5459cbc3ac96850c1b93db7 100644 --- a/indra/newview/llhudobject.cpp +++ b/indra/newview/llhudobject.cpp @@ -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() { diff --git a/indra/newview/llhudobject.h b/indra/newview/llhudobject.h index ff70b6a52f981358baee4ba85a3a085c3abff115..97145b9a84d40d60f66cfc0e72ea1e2d749876b9 100644 --- a/indra/newview/llhudobject.h +++ b/indra/newview/llhudobject.h @@ -69,6 +69,7 @@ class LLHUDObject : public LLRefCount static void updateAll(); static void renderAll(); static void renderAllForSelect(); + static void renderAllForTimer(); static void cleanupHUDObjects(); @@ -100,6 +101,7 @@ class LLHUDObject : public LLRefCount virtual void render() = 0; virtual void renderForSelect() {}; + virtual void renderForTimer() {}; protected: U8 mType; diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index e4c2ca9ae39ec5a408a5209332dfabbcc1095093..1ee3b84b5e7666ae4aeeac587710b4b410bc4252 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -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");