summaryrefslogtreecommitdiff
path: root/indra/newview/lloutputmonitorctrl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/lloutputmonitorctrl.cpp')
-rw-r--r--indra/newview/lloutputmonitorctrl.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp
index f816dc589d..9857e37bc3 100644
--- a/indra/newview/lloutputmonitorctrl.cpp
+++ b/indra/newview/lloutputmonitorctrl.cpp
@@ -249,8 +249,19 @@ void LLOutputMonitorCtrl::draw()
void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id)
{
+ if (speaker_id.isNull() && mSpeakerId.notNull())
+ {
+ LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this);
+ }
+
if (speaker_id.isNull() || speaker_id == mSpeakerId) return;
+ if (mSpeakerId.notNull())
+ {
+ // Unregister previous registration to avoid crash. EXT-4782.
+ LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this);
+ }
+
mSpeakerId = speaker_id;
LLSpeakingIndicatorManager::registerSpeakingIndicator(mSpeakerId, this);