summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Antipov <mantipov@productengine.com>2009-12-22 16:09:31 +0200
committerMike Antipov <mantipov@productengine.com>2009-12-22 16:09:31 +0200
commit2094847b1f0b6abff25112f7161752819a8ff5d1 (patch)
treedc2eb44a0c119a3528511a02afe4e2d8855c48d3
parentc6e24e53a1041ab12b74469e335281f416af5b75 (diff)
Work on normal bug EXT-3434 There is no difference between invited and left participants in a Group call (Voice Controls)
-- commented out updating participants voice states from draw() -- improved removing of HAS LEFT participant (now it is removed via LLAvatarList approach instead of LLFlatListView) --HG-- branch : product-engine
-rw-r--r--indra/newview/llcallfloater.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 33253c2781..98ee085687 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -174,7 +174,11 @@ void LLCallFloater::draw()
// It should be done only when she joins or leaves voice chat.
// But seems that LLVoiceClientParticipantObserver is not enough to satisfy this requirement.
// *TODO: mantipov: remove from draw()
- onChange();
+
+ // NOTE: it looks like calling onChange() here is not necessary,
+ // but sometime it is not called properly from the observable object.
+ // Seems this is a problem somewhere in Voice Client (LLVoiceClient::participantAddedEvent)
+// onChange();
bool is_moderator_muted = gVoiceClient->getIsModeratorMuted(gAgentID);
@@ -641,7 +645,13 @@ void LLCallFloater::removeVoiceLeftParticipant(const LLUUID& voice_speaker_id)
mVoiceLeftTimersMap.erase(mVoiceLeftTimersMap.find(voice_speaker_id));
}
- mAvatarList->removeItemByUUID(voice_speaker_id);
+ LLAvatarList::uuid_vector_t& speaker_uuids = mAvatarList->getIDs();
+ LLAvatarList::uuid_vector_t::iterator pos = std::find(speaker_uuids.begin(), speaker_uuids.end(), voice_speaker_id);
+ if(pos != speaker_uuids.end())
+ {
+ speaker_uuids.erase(pos);
+ mAvatarList->setDirty();
+ }
}