diff --git a/indra/newview/aldiscordmanager.cpp b/indra/newview/aldiscordmanager.cpp index c57ee6b2a418dd72111547fcfc0fc6e7d0336c8e..65756792d87a1533fc00840eb45f1f1d75e45aab 100644 --- a/indra/newview/aldiscordmanager.cpp +++ b/indra/newview/aldiscordmanager.cpp @@ -47,7 +47,7 @@ ALDiscordManager::ALDiscordManager() { LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&ALDiscordManager::onLoginCompleted, this)); - gSavedPerAccountSettings.getControl("ALDiscordIntegration")->getSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) + mIntegrationSettingConnection = gSavedPerAccountSettings.getControl("ALDiscordIntegration")->getSignal()->connect([this](LLControlVariable* control, const LLSD& new_val, const LLSD& old_val) { bool discord_enabled = new_val; if (discord_enabled) @@ -68,6 +68,7 @@ ALDiscordManager::ALDiscordManager() ALDiscordManager::~ALDiscordManager() { + mIntegrationSettingConnection.disconnect(); shutdown(); } diff --git a/indra/newview/aldiscordmanager.h b/indra/newview/aldiscordmanager.h index 8ad3c183574f08f0477a62e306745da9bd282281..2176a84f4f87c5c7d874e16c8c82739462f8578c 100644 --- a/indra/newview/aldiscordmanager.h +++ b/indra/newview/aldiscordmanager.h @@ -49,6 +49,7 @@ class ALDiscordManager final void onRegionChange(); void updateActivity(); + boost::signals2::connection mIntegrationSettingConnection; boost::signals2::connection mRegionChangeConnection; std::unique_ptr<discord::Core> mDiscord; LLHost mCurrentHost; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index e3d0d07825e4927118be476b00bda90e107af872..24573da5b485007adb1a56443c3b71157f1b8804 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -5706,6 +5706,7 @@ void LLAppViewer::handleLoginComplete() } mOnLoginCompleted(); + mOnLoginCompleted.disconnect_all_slots(); // No longer needed // [SL:KB] - Patch: Build-AssetRecovery | Checked: 2011-11-24 (Catznip-3.2) LLAssetRecoverQueue::recoverIfNeeded();