diff options
author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2022-04-21 22:58:30 +0300 |
---|---|---|
committer | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2022-04-21 22:58:30 +0300 |
commit | ffdc04f5d2b2d952ace912a473b11f4305e9d057 (patch) | |
tree | a9aabd5764d8fc2431b0dfba43837c748c0c323f /indra/newview | |
parent | cf7bc4406e983b3779db0bffff8057b36702cf8d (diff) |
SL-17040 Crash due to LLWord not existing
LLWord should persist till the end due to wide usage.
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llappviewer.cpp | 3 | ||||
-rw-r--r-- | indra/newview/llstartup.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llworld.cpp | 3 | ||||
-rw-r--r-- | indra/newview/llworld.h | 4 |
4 files changed, 7 insertions, 5 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index f89ab586d5..a63203f3cb 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -2161,6 +2161,7 @@ bool LLAppViewer::cleanup() LLEnvironment::deleteSingleton(); LLSelectMgr::deleteSingleton(); LLViewerEventRecorder::deleteSingleton(); + LLWorld::deleteSingleton(); // It's not at first obvious where, in this long sequence, a generic cleanup // call OUGHT to go. So let's say this: as we migrate cleanup from @@ -5421,7 +5422,7 @@ void LLAppViewer::disconnectViewer() // Now we just ask the LLWorld singleton to cleanly shut down. if(LLWorld::instanceExists()) { - LLWorld::getInstance()->destroyClass(); + LLWorld::getInstance()->resetClass(); } LLVOCache::deleteSingleton(); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 8912d1cff1..5df8cd9cb0 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -2841,7 +2841,7 @@ void reset_login() gAgentWearables.cleanup(); gAgentCamera.cleanup(); gAgent.cleanup(); - LLWorld::getInstance()->destroyClass(); + LLWorld::getInstance()->resetClass(); if ( gViewerWindow ) { // Hide menus and normal buttons diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 82629fd737..8abb49fba8 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -113,7 +113,7 @@ LLWorld::LLWorld() : } -void LLWorld::destroyClass() +void LLWorld::resetClass() { mHoleWaterObjects.clear(); gObjectList.destroy(); @@ -135,7 +135,6 @@ void LLWorld::destroyClass() LLDrawable::incrementVisible(); LLSceneMonitor::deleteSingleton(); - LLWorld::deleteSingleton(); } diff --git a/indra/newview/llworld.h b/indra/newview/llworld.h index 69f2df4203..5c43cdf4e2 100644 --- a/indra/newview/llworld.h +++ b/indra/newview/llworld.h @@ -64,7 +64,9 @@ class LLWorld : public LLSimpleton<LLWorld> public: LLWorld(); - void destroyClass(); + // Clear any objects, regions + // Prepares class to be reused or destroyed + void resetClass(); LLViewerRegion* addRegion(const U64 ®ion_handle, const LLHost &host); // safe to call if already present, does the "right thing" if |