FIRE-20152; Call FSAvatarRenderPersistence::saveAvatarRenderSettings during LLAppViewer::cleanup and not when the crt calls the destructors of static objects.

master
Nicky 2016-10-14 23:21:53 +02:00
parent c8c1f7c550
commit 803c5e4349
3 changed files with 10 additions and 2 deletions

View File

@ -36,7 +36,6 @@ FSAvatarRenderPersistence::FSAvatarRenderPersistence()
FSAvatarRenderPersistence::~FSAvatarRenderPersistence()
{
saveAvatarRenderSettings();
}
void FSAvatarRenderPersistence::init()

View File

@ -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;

View File

@ -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 // </FS:ND>
// <FS:ND> 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();
// </FS:ND>
// Must clean up texture references before viewer window is destroyed.
if(LLHUDManager::instanceExists())
{