From 8ccf3a20b3ecd357f28e70a0c704ec7eee79a1bd Mon Sep 17 00:00:00 2001 From: Shyotl Date: Fri, 28 Jun 2013 16:11:54 -0500 Subject: [PATCH] Fix crash that would happen upon revealing then closing the wl pref panel and then overriding region windlight settings. --- indra/newview/wlfPanel_AdvSettings.cpp | 7 ++++--- indra/newview/wlfPanel_AdvSettings.h | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/indra/newview/wlfPanel_AdvSettings.cpp b/indra/newview/wlfPanel_AdvSettings.cpp index 6cdd0119c..18613c496 100644 --- a/indra/newview/wlfPanel_AdvSettings.cpp +++ b/indra/newview/wlfPanel_AdvSettings.cpp @@ -72,6 +72,7 @@ void wlfPanel_AdvSettings::updateClass() void wlfPanel_AdvSettings::build() { + mConnections.clear(); deleteAllChildren(); std::string ButtonState; if (gSavedSettings.getBOOL("wlfAdvSettingsPopup")) @@ -161,9 +162,9 @@ BOOL wlfPanel_AdvSettings::postBuild() // mDayCyclePresetCombo = getChild("DCPresetsCombo"); // mDayCyclePresetCombo->setCommitCallback(boost::bind(&wlfPanel_AdvSettings::onChangeDCPresetName, this, _2)); - LLEnvManagerNew::instance().setPreferencesChangeCallback(boost::bind(&wlfPanel_AdvSettings::refreshLists, this)); - LLWaterParamManager::getInstance()->setPresetListChangeCallback(boost::bind(&wlfPanel_AdvSettings::populateWaterPresetsList, this)); - LLWLParamManager::getInstance()->setPresetListChangeCallback(boost::bind(&wlfPanel_AdvSettings::populateSkyPresetsList, this)); + mConnections.push_front(new boost::signals2::scoped_connection(LLEnvManagerNew::instance().setPreferencesChangeCallback(boost::bind(&wlfPanel_AdvSettings::refreshLists, this)))); + mConnections.push_front(new boost::signals2::scoped_connection(LLWaterParamManager::getInstance()->setPresetListChangeCallback(boost::bind(&wlfPanel_AdvSettings::populateWaterPresetsList, this)))); + mConnections.push_front(new boost::signals2::scoped_connection(LLWLParamManager::getInstance()->setPresetListChangeCallback(boost::bind(&wlfPanel_AdvSettings::populateSkyPresetsList, this)))); // LLDayCycleManager::instance().setModifyCallback(boost::bind(&wlfPanel_AdvSettings::populateDayCyclePresetsList, this)); populateWaterPresetsList(); diff --git a/indra/newview/wlfPanel_AdvSettings.h b/indra/newview/wlfPanel_AdvSettings.h index 0a810dc3f..ea7c65d01 100644 --- a/indra/newview/wlfPanel_AdvSettings.h +++ b/indra/newview/wlfPanel_AdvSettings.h @@ -33,7 +33,7 @@ #define LL_wlfPanel_AdvSettings_H #include "llpanel.h" - +#include // [RLVa:KB] #include "rlvhandler.h" @@ -83,6 +83,8 @@ protected: LLSliderCtrl* mTimeSlider; bool mExpanded; + + boost::ptr_list mConnections; }; #endif // LL_wlfPanel_AdvSettings_H