summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorMike Antipov <mantipov@productengine.com>2009-12-22 17:10:15 +0200
committerMike Antipov <mantipov@productengine.com>2009-12-22 17:10:15 +0200
commit3b1ead667ce0d23532426320525024a136967fc2 (patch)
treedbde489f6eaf9db1e5711ce036fefd6ccdd89fba /indra/newview
parent2094847b1f0b6abff25112f7161752819a8ff5d1 (diff)
Work on normal bug EXT-3434 There is no difference between invited and left participants in a Group call (Voice Controls)
-- implemented workaround not to set agent in HAS LEFT state --HG-- branch : product-engine
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llcallfloater.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 98ee085687..29f37a04b4 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -297,8 +297,13 @@ void LLCallFloater::updateSession()
void LLCallFloater::refreshPartisipantList()
{
+ // lets forget states from the previous session
+ // for timers...
resetVoiceRemoveTimers();
+ // ...and for speaker state
+ mSpeakerStateMap.clear();
+
delete mPaticipants;
mPaticipants = NULL;
mAvatarList->clear();
@@ -580,6 +585,19 @@ void LLCallFloater::updateParticipantsVoiceState()
void LLCallFloater::setState(LLAvatarListItem* item, ESpeakerState state)
{
+ // *HACK: mantipov: sometimes such situation is possible while switching to voice channel:
+/*
+ - voice channel is switched to the one user is joining
+ - participant list is initialized with voice states: agent is in voice
+ - than such log messages were found (with agent UUID)
+ - LLVivoxProtocolParser::process_impl: parsing: <Response requestId="22" action="Session.MediaDisconnect.1"><ReturnCode>0</ReturnCode><Results><StatusCode>0</StatusCode><StatusString /></Results><InputXml><Request requestId="22" action="Session.MediaDisconnect.1"><SessionGroupHandle>9</SessionGroupHandle><SessionHandle>12</SessionHandle><Media>Audio</Media></Request></InputXml></Response>
+ - LLVoiceClient::sessionState::removeParticipant: participant "sip:x2pwNkMbpR_mK4rtB_awASA==@bhr.vivox.com" (da9c0d90-c6e9-47f9-8ae2-bb41fdac0048) removed.
+ - and than while updating participants voice states agent is marked as HAS LEFT
+ - next updating of LLVoiceClient state makes agent JOINED
+ So, lets skip HAS LEFT state for agent's avatar
+*/
+ if (STATE_LEFT == state && item->getAvatarId() == gAgentID) return;
+
setState(item->getAvatarId(), state);
LLStyle::Params speaker_style;