From 753006d5aedb3b141cb2ba28857d9596c7b6e6f4 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Thu, 18 Sep 2014 11:53:36 +0200 Subject: [PATCH] Protect all other debug settings change callbacks in FSRadar --- indra/newview/fsradar.cpp | 16 ++++++++++++++-- indra/newview/fsradar.h | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/indra/newview/fsradar.cpp b/indra/newview/fsradar.cpp index 78e27a8380..ad4c27b7ca 100644 --- a/indra/newview/fsradar.cpp +++ b/indra/newview/fsradar.cpp @@ -95,15 +95,17 @@ FSRadar::FSRadar() : mRadarFrameCount(0), mRadarLastBulkOffsetRequestTime(0), mRadarLastRequestTime(0.f), + mShowUsernamesCallbackConnection(), + mNameFormatCallbackConnection(), mAgeAlertCallbackConnection() { mRadarListUpdater = new FSRadarListUpdater(boost::bind(&FSRadar::updateRadarList, this)); // Use the callback from LLAvatarNameCache here or we might update the names too early! LLAvatarNameCache::addUseDisplayNamesCallback(boost::bind(&FSRadar::updateNames, this)); - gSavedSettings.getControl("NameTagShowUsernames")->getSignal()->connect(boost::bind(&FSRadar::updateNames, this)); + mShowUsernamesCallbackConnection = gSavedSettings.getControl("NameTagShowUsernames")->getSignal()->connect(boost::bind(&FSRadar::updateNames, this)); - gSavedSettings.getControl("RadarNameFormat")->getSignal()->connect(boost::bind(&FSRadar::updateNames, this)); + mNameFormatCallbackConnection = gSavedSettings.getControl("RadarNameFormat")->getSignal()->connect(boost::bind(&FSRadar::updateNames, this)); mAgeAlertCallbackConnection = gSavedSettings.getControl("RadarAvatarAgeAlertValue")->getSignal()->connect(boost::bind(&FSRadar::updateAgeAlertCheck, this)); } @@ -117,6 +119,16 @@ FSRadar::~FSRadar() delete em_it->second; } + if (mShowUsernamesCallbackConnection.connected()) + { + mShowUsernamesCallbackConnection.disconnect(); + } + + if (mNameFormatCallbackConnection.connected()) + { + mNameFormatCallbackConnection.disconnect(); + } + if (mAgeAlertCallbackConnection.connected()) { mAgeAlertCallbackConnection.disconnect(); diff --git a/indra/newview/fsradar.h b/indra/newview/fsradar.h index 8950f927cb..9d44afa374 100644 --- a/indra/newview/fsradar.h +++ b/indra/newview/fsradar.h @@ -145,6 +145,8 @@ private: radar_update_callback_t mUpdateSignal; + boost::signals2::connection mShowUsernamesCallbackConnection; + boost::signals2::connection mNameFormatCallbackConnection; boost::signals2::connection mAgeAlertCallbackConnection; };