diff --git a/indra/newview/fsavatarrenderpersistence.cpp b/indra/newview/fsavatarrenderpersistence.cpp index ed80c02e36..ba0adccc6e 100644 --- a/indra/newview/fsavatarrenderpersistence.cpp +++ b/indra/newview/fsavatarrenderpersistence.cpp @@ -36,7 +36,6 @@ FSAvatarRenderPersistence::FSAvatarRenderPersistence() FSAvatarRenderPersistence::~FSAvatarRenderPersistence() { - saveAvatarRenderSettings(); } void FSAvatarRenderPersistence::init() diff --git a/indra/newview/fsavatarrenderpersistence.h b/indra/newview/fsavatarrenderpersistence.h index 469ae85278..dcdfeb76de 100644 --- a/indra/newview/fsavatarrenderpersistence.h +++ b/indra/newview/fsavatarrenderpersistence.h @@ -40,6 +40,8 @@ friend class FSPanelPreferenceBackup; public: void init(); + void saveAvatarRenderSettings(); + LLVOAvatar::VisualMuteSettings getAvatarRenderSettings(const LLUUID& avatar_id); void setAvatarRenderSettings(const LLUUID& avatar_id, LLVOAvatar::VisualMuteSettings render_settings); @@ -57,7 +59,6 @@ private: virtual ~FSAvatarRenderPersistence(); void loadAvatarRenderSettings(); - void saveAvatarRenderSettings(); avatar_render_setting_t mAvatarRenderMap; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 2d6e013496..3dae6d9b8e 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -257,6 +257,8 @@ #if HAS_GROWL #include "growlmanager.h" #endif +#include "fsavatarrenderpersistence.h" + // *FIX: These extern globals should be cleaned up. // The globals either represent state/config/resource-storage of either // this app, or another 'component' of the viewer. App globals should be @@ -2040,6 +2042,12 @@ bool LLAppViewer::cleanup() LLPhysicsExtensions::quitSystem(); #endif // + // FIRE-20152; save avatar render settings during cleanup, not in the dtor of the static instance. + // Otherwise the save will happen during crt termination when most of the viewers infrastructure is in a non deterministic state + if( FSAvatarRenderPersistence::instanceExists() ) + FSAvatarRenderPersistence::getInstance()->saveAvatarRenderSettings(); + // + // Must clean up texture references before viewer window is destroyed. if(LLHUDManager::instanceExists()) {