summaryrefslogtreecommitdiff
path: root/indra/newview/llcallfloater.cpp
diff options
context:
space:
mode:
authorMike Antipov <mantipov@productengine.com>2009-12-01 19:42:42 +0200
committerMike Antipov <mantipov@productengine.com>2009-12-01 19:42:42 +0200
commit279942b7bf78483fb8b2866e79782cc7e1cf260e (patch)
tree37207c34b358626b19aee9f5ffb282bd07d27a76 /indra/newview/llcallfloater.cpp
parentdd262a7a3682c80d67908ab4b8f31660699e85e9 (diff)
Fixed critical bug EXT-2990 (Viewer crashes after openning "Voice Control" on IM floater)
-- added disconnecting from subscribed signals while destroying participant list -- added disconnecting from subscribed signals while destroying Voice controls -- added nullifying of the pointer to speaker manager when channel is changed --HG-- branch : product-engine
Diffstat (limited to 'indra/newview/llcallfloater.cpp')
-rw-r--r--indra/newview/llcallfloater.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 1b929eca0e..7db709086f 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -54,6 +54,7 @@ LLCallFloater::LLCallFloater(const LLSD& key)
LLCallFloater::~LLCallFloater()
{
+ mChannelChangedConnection.disconnect();
delete mPaticipants;
mPaticipants = NULL;
}
@@ -77,7 +78,7 @@ BOOL LLCallFloater::postBuild()
updateSession();
// subscribe to to be notified Voice Channel is changed
- LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::onCurrentChannelChanged, this, _1));
+ mChannelChangedConnection = LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::onCurrentChannelChanged, this, _1));
return TRUE;
}
@@ -157,6 +158,8 @@ void LLCallFloater::refreshPartisipantList()
void LLCallFloater::onCurrentChannelChanged(const LLUUID& /*session_id*/)
{
+ // Forget speaker manager from the previous session to avoid using it after session was destroyed.
+ mSpeakerManager = NULL;
updateSession();
}