diff options
author | Dave Parks <davep@lindenlab.com> | 2022-12-02 09:56:42 -0600 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2022-12-02 09:56:42 -0600 |
commit | ed2b768da29f8dc4f96b463fe4d4087deab75a37 (patch) | |
tree | 0a18a9a0c283a67e1c3786f4aecf88aadb236046 /indra | |
parent | b095194267389b0f5512fb14f18338bd256f3e81 (diff) |
SL-18745 Fix for assert on teleport.
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llreflectionmapmanager.cpp | 16 | ||||
-rw-r--r-- | indra/newview/llreflectionmapmanager.h | 3 | ||||
-rw-r--r-- | indra/newview/pipeline.cpp | 2 |
3 files changed, 14 insertions, 7 deletions
diff --git a/indra/newview/llreflectionmapmanager.cpp b/indra/newview/llreflectionmapmanager.cpp index e8ad813ed2..088b83a8e9 100644 --- a/indra/newview/llreflectionmapmanager.cpp +++ b/indra/newview/llreflectionmapmanager.cpp @@ -41,6 +41,11 @@ extern BOOL gTeleportDisplay; LLReflectionMapManager::LLReflectionMapManager() { + initCubeFree(); +} + +void LLReflectionMapManager::initCubeFree() +{ for (int i = 1; i < LL_MAX_REFLECTION_PROBE_COUNT; ++i) { mCubeFree[i] = true; @@ -50,12 +55,6 @@ LLReflectionMapManager::LLReflectionMapManager() mCubeFree[0] = false; } -struct CompareReflectionMapDistance -{ - -}; - - struct CompareProbeDistance { bool operator()(const LLPointer<LLReflectionMap>& lhs, const LLPointer<LLReflectionMap>& rhs) @@ -79,7 +78,6 @@ void LLReflectionMapManager::update() return; } - // =============== TODO -- move to an init function ================= initReflectionMaps(); if (!mRenderTarget.isComplete()) @@ -937,7 +935,11 @@ void LLReflectionMapManager::cleanup() mUpdatingFace = 0; mDefaultProbe = nullptr; + mUpdatingProbe = nullptr; glDeleteBuffers(1, &mUBO); mUBO = 0; + + // note: also called on teleport (not just shutdown), so make sure we're in a good "starting" state + initCubeFree(); } diff --git a/indra/newview/llreflectionmapmanager.h b/indra/newview/llreflectionmapmanager.h index 4e2ff7c751..14a6c089da 100644 --- a/indra/newview/llreflectionmapmanager.h +++ b/indra/newview/llreflectionmapmanager.h @@ -97,6 +97,9 @@ public: private: friend class LLPipeline; + // initialize mCubeFree array to default values + void initCubeFree(); + // delete the probe with the given index in mProbes void deleteProbe(U32 i); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 2d4db48ac5..2f3aa1238e 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -7405,6 +7405,8 @@ void LLPipeline::doResetVertexBuffers(bool forced) LLVOPartGroup::destroyGL(); gGL.resetVertexBuffer(); + mReflectionMapManager.cleanup(); + SUBSYSTEM_CLEANUP(LLVertexBuffer); if (LLVertexBuffer::sGLCount != 0) |