diff options
| -rw-r--r-- | indra/newview/llfloaterimcontainer.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llspeakers.cpp | 26 | 
2 files changed, 13 insertions, 17 deletions
diff --git a/indra/newview/llfloaterimcontainer.cpp b/indra/newview/llfloaterimcontainer.cpp index b20d19d0fd..2789b78c2d 100644 --- a/indra/newview/llfloaterimcontainer.cpp +++ b/indra/newview/llfloaterimcontainer.cpp @@ -1126,7 +1126,7 @@ BOOL LLFloaterIMContainer::selectConversationPair(const LLUUID& session_id, bool      /* widget processing */      if (select_widget)      { -    	LLFolderViewItem* widget = mConversationsWidgets[session_id]; +		LLFolderViewItem* widget = get_ptr_in_map(mConversationsWidgets,session_id);      	if (widget && widget->getParentFolder())      	{      		widget->getParentFolder()->setSelection(widget, FALSE, FALSE); @@ -1539,7 +1539,7 @@ void LLFloaterIMContainer::openNearbyChat()  	//(which it should be...), open it so to make the list of participants visible. This happens to be the most common case when opening the Chat floater.  	if(mConversationsItems.size() == 1)  	{ -		LLConversationViewSession* nearby_chat = dynamic_cast<LLConversationViewSession*>(mConversationsWidgets[LLUUID()]); +		LLConversationViewSession* nearby_chat = dynamic_cast<LLConversationViewSession*>(get_ptr_in_map(mConversationsWidgets,LLUUID()));  		if (nearby_chat)  		{  			nearby_chat->setOpen(TRUE); diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 726199b7aa..5036334bdd 100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -503,27 +503,23 @@ void LLSpeakerMgr::update(BOOL resort_ok)  void LLSpeakerMgr::updateSpeakerList()  { -	// are we bound to the currently active voice channel? -	if ((!mVoiceChannel && LLVoiceClient::getInstance()->inProximalChannel()) || (mVoiceChannel)) -	{ -	        std::set<LLUUID> participants; -	        LLVoiceClient::getInstance()->getParticipantList(participants); -		// add new participants to our list of known speakers -		for (std::set<LLUUID>::iterator participant_it = participants.begin(); -			 participant_it != participants.end();  -			 ++participant_it) +	// Are we bound to the currently active voice channel? +	if ((!mVoiceChannel && LLVoiceClient::getInstance()->inProximalChannel()) || (mVoiceChannel && mVoiceChannel->isActive())) +	{ +		std::set<LLUUID> participants; +		LLVoiceClient::getInstance()->getParticipantList(participants); +		// If we are, add all voice client participants to our list of known speakers +		for (std::set<LLUUID>::iterator participant_it = participants.begin(); participant_it != participants.end(); ++participant_it)  		{  				setSpeaker(*participant_it,   						   LLVoiceClient::getInstance()->getDisplayName(*participant_it),  						   LLSpeaker::STATUS_VOICE_ACTIVE,   						   (LLVoiceClient::getInstance()->isParticipantAvatar(*participant_it)?LLSpeaker::SPEAKER_AGENT:LLSpeaker::SPEAKER_EXTERNAL)); - -  		}  	}  	else   	{ -		// Check if the list is empty, except if it's Nearby Chat (session_id NULL). +		// If not, check if the list is empty, except if it's Nearby Chat (session_id NULL).  		LLUUID session_id = getSessionID();  		if ((mSpeakers.size() == 0) && (!session_id.isNull()))  		{ @@ -533,16 +529,16 @@ void LLSpeakerMgr::updateSpeakerList()  			LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(session_id);  			for (uuid_vec_t::iterator it = session->mInitialTargetIDs.begin();it!=session->mInitialTargetIDs.end();++it)  			{ -				// Allow to set buddies if they are on line. Allow any other avatar. +				// Add buddies if they are on line, add any other avatar.  				if (!LLAvatarTracker::instance().isBuddy(*it) || LLAvatarTracker::instance().isBuddyOnline(*it))  				{  					setSpeaker(*it, "", LLSpeaker::STATUS_VOICE_ACTIVE, LLSpeaker::SPEAKER_AGENT);  				}  			} -			// Also add the current agent -			setSpeaker(gAgentID, "", LLSpeaker::STATUS_VOICE_ACTIVE, LLSpeaker::SPEAKER_AGENT);  		}  	} +	// Finally, always add the current agent (it has to be there no matter what...) +	setSpeaker(gAgentID, "", LLSpeaker::STATUS_VOICE_ACTIVE, LLSpeaker::SPEAKER_AGENT);  }  void LLSpeakerMgr::setSpeakerNotInChannel(LLSpeaker* speakerp)  | 
