diff options
author | Mike Antipov <mantipov@productengine.com> | 2009-12-22 16:09:31 +0200 |
---|---|---|
committer | Mike Antipov <mantipov@productengine.com> | 2009-12-22 16:09:31 +0200 |
commit | 2094847b1f0b6abff25112f7161752819a8ff5d1 (patch) | |
tree | dc2eb44a0c119a3528511a02afe4e2d8855c48d3 | |
parent | c6e24e53a1041ab12b74469e335281f416af5b75 (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.cpp | 14 |
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(); + } } |