diff options
| author | Steven Bennetts <steve@lindenlab.com> | 2009-10-09 00:57:36 +0000 | 
|---|---|---|
| committer | Steven Bennetts <steve@lindenlab.com> | 2009-10-09 00:57:36 +0000 | 
| commit | f74e3d40fdf2ca82c73490dc5d0cb1dd7b4ec028 (patch) | |
| tree | b6c48c771760b77ecb07e305e328769b2e92aef0 | |
| parent | 81e0fb43caa27491fa18b17d6a05cafb0e20dfa6 (diff) | |
Added safety checks wherever getSpeakerManager() is called.
Removed a meaningless (and misleading) const qualifier to a LLPointer return value.
Added a getter for LLSpeakerMgr::mVoiceChannel to replace some very incorrect code casting LLIMSpeakerMgr to LLVoiceChannelP2P
Reviewed by Leyla
| -rw-r--r-- | indra/newview/llimpanel.cpp | 20 | ||||
| -rw-r--r-- | indra/newview/llimview.cpp | 11 | 
2 files changed, 22 insertions, 9 deletions
| diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index 4435bba0ed..99f331d087 100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp @@ -1162,8 +1162,12 @@ void LLFloaterIMPanel::draw()  	childSetEnabled("start_call_btn", enable_connect);  	childSetEnabled("send_btn", !childGetValue("chat_editor").asString().empty()); +	LLPointer<LLSpeaker> self_speaker;  	LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionUUID); -	LLPointer<LLSpeaker> self_speaker = speaker_mgr->findSpeaker(gAgent.getID()); +	if (speaker_mgr) +	{ +		self_speaker = speaker_mgr->findSpeaker(gAgent.getID()); +	}  	if(!mTextIMPossible)  	{  		mInputEditor->setEnabled(FALSE); @@ -1751,8 +1755,9 @@ void LLFloaterIMPanel::setTyping(BOOL typing)  			// Will send typing state after a short delay.  			mSentTypingState = FALSE;  		} - -		speaker_mgr->setSpeakerTyping(gAgent.getID(), TRUE); +		 +		if (speaker_mgr) +			speaker_mgr->setSpeakerTyping(gAgent.getID(), TRUE);  	}  	else  	{ @@ -1762,7 +1767,8 @@ void LLFloaterIMPanel::setTyping(BOOL typing)  			sendTypingState(FALSE);  			mSentTypingState = TRUE;  		} -		speaker_mgr->setSpeakerTyping(gAgent.getID(), FALSE); +		if (speaker_mgr) +			speaker_mgr->setSpeakerTyping(gAgent.getID(), FALSE);  	}  	mTyping = typing; @@ -1822,7 +1828,11 @@ void LLFloaterIMPanel::removeTypingIndicator(const LLIMInfo* im_info)  		mHistoryEditor->removeTextFromEnd(chars_to_remove);  		if (im_info)  		{ -			LLIMModel::getInstance()->getSpeakerManager(mSessionUUID)->setSpeakerTyping(im_info->mFromID, FALSE); +			LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionUUID); +			if (speaker_mgr) +			{ +				speaker_mgr->setSpeakerTyping(im_info->mFromID, FALSE); +			}  		}  	}  } diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 7a7b062b5d..6b947b2503 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1432,12 +1432,15 @@ LLUUID LLIMMgr::addP2PSession(const std::string& name,  {  	LLUUID session_id = addSession(name, IM_NOTHING_SPECIAL, other_participant_id); -	LLVoiceChannelP2P* voice_channel = dynamic_cast<LLVoiceChannelP2P*>(LLIMModel::getInstance()->getSpeakerManager(session_id)); -	if (voice_channel) +	LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(session_id); +	if (speaker_mgr)  	{ -		voice_channel->setSessionHandle(voice_session_handle, caller_uri); +		LLVoiceChannelP2P* voice_channel = dynamic_cast<LLVoiceChannelP2P*>(speaker_mgr->getVoiceChannel()); +		if (voice_channel) +		{ +			voice_channel->setSessionHandle(voice_session_handle, caller_uri); +		}  	} -  	return session_id;  } | 
