From 470a273529694c66340f788a9eb7898aa3fa5da5 Mon Sep 17 00:00:00 2001 From: Ansariel Date: Fri, 25 Jul 2014 07:53:23 +0200 Subject: [PATCH] Disconnect from region change callback if AOEngine gets destroyed --- indra/newview/aoengine.cpp | 7 ++++++- indra/newview/aoengine.h | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/indra/newview/aoengine.cpp b/indra/newview/aoengine.cpp index 652fbe141e..032916c6ca 100644 --- a/indra/newview/aoengine.cpp +++ b/indra/newview/aoengine.cpp @@ -66,12 +66,17 @@ AOEngine::AOEngine() : { gSavedPerAccountSettings.getControl("UseAO")->getCommitSignal()->connect(boost::bind(&AOEngine::onToggleAOControl, this)); - gAgent.addRegionChangedCallback(boost::bind(&AOEngine::onRegionChange, this)); + mRegionChangeConnection = gAgent.addRegionChangedCallback(boost::bind(&AOEngine::onRegionChange, this)); } AOEngine::~AOEngine() { clear(false); + + if (mRegionChangeConnection.connected()) + { + mRegionChangeConnection.disconnect(); + } } void AOEngine::init() diff --git a/indra/newview/aoengine.h b/indra/newview/aoengine.h index 905a7534cf..904edae163 100644 --- a/indra/newview/aoengine.h +++ b/indra/newview/aoengine.h @@ -214,6 +214,8 @@ class AOEngine std::vector mOldImportSets; LLUUID mImportCategory; S32 mImportRetryCount; + + boost::signals2::connection mRegionChangeConnection; }; #endif // AOENGINE_H