summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorMike Antipov <mantipov@productengine.com>2009-12-25 16:31:52 +0200
committerMike Antipov <mantipov@productengine.com>2009-12-25 16:31:52 +0200
commit91a84107576d8d527cf152eda32a9b7091e17e01 (patch)
treed1ed05eae13751a006fbf03a58b8ffc888545d0e /indra
parent56b3e7a6b3e988cdff0598bfb8fe6f5eaa7f8adb (diff)
Fixed normal bug EXT-3544 (Voice icon doesn't become "muted" in the voice controls panel after muting a resident)
--added updating of speakers in speaker manager when LLVoiceClient::participantUpdatedEvent and LLViewerChatterBoxSessionAgentListUpdates::post events come. --HG-- branch : product-engine
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llimview.cpp5
-rw-r--r--indra/newview/llvoiceclient.cpp27
2 files changed, 32 insertions, 0 deletions
diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 70f15e0057..388e0c8d8d 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -2534,6 +2534,11 @@ void LLIMMgr::processAgentListUpdates(const LLUUID& session_id, const LLSD& body
if (speaker_mgr)
{
speaker_mgr->updateSpeakers(body);
+
+ // also the same call is added into LLVoiceClient::participantUpdatedEvent because
+ // sometimes it is called AFTER LLViewerChatterBoxSessionAgentListUpdates::post()
+ // when moderation state changed too late. See EXT-3544.
+ speaker_mgr->update(true);
}
else
{
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index cfa1f05ec0..c2d26a1971 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -4443,6 +4443,33 @@ void LLVoiceClient::participantUpdatedEvent(
participant->mPower = 0.0f;
}
participant->mVolume = volume;
+
+
+ // *HACH: mantipov: added while working on EXT-3544
+ /*
+ Sometimes LLVoiceClient::participantUpdatedEvent callback is called BEFORE
+ LLViewerChatterBoxSessionAgentListUpdates::post() sometimes AFTER.
+
+ participantUpdatedEvent updates voice participant state in particular participantState::mIsModeratorMuted
+ Originally we wanted to update session Speaker Manager to fire LLSpeakerVoiceModerationEvent to fix the EXT-3544 bug.
+ Calling of the LLSpeakerMgr::update() method was added into LLIMMgr::processAgentListUpdates.
+
+ But in case participantUpdatedEvent() is called after LLViewerChatterBoxSessionAgentListUpdates::post()
+ voice participant mIsModeratorMuted is changed after speakers are updated in Speaker Manager
+ and event is not fired.
+
+ So, we have to call LLSpeakerMgr::update() here. In any case it is better than call it
+ in LLCallFloater::draw()
+ */
+ LLVoiceChannel* voice_cnl = LLVoiceChannel::getCurrentVoiceChannel();
+ if (voice_cnl)
+ {
+ LLSpeakerMgr* speaker_manager = LLIMModel::getInstance()->getSpeakerManager(voice_cnl->getSessionID());
+ if (speaker_manager)
+ {
+ speaker_manager->update(true);
+ }
+ }
}
else
{