diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llappviewer.cpp | 13 | ||||
| -rw-r--r-- | indra/newview/llvoiceclient.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llvoiceclient.h | 1 | ||||
| -rw-r--r-- | indra/newview/llvoicevivox.cpp | 22 | ||||
| -rw-r--r-- | indra/newview/llvoicevivox.h | 2 | 
5 files changed, 36 insertions, 3 deletions
| diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 451516610b..f3f74ee3af 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3207,9 +3207,18 @@ LLSD LLAppViewer::getViewerInfo() const  	info["AUDIO_DRIVER_VERSION"] = gAudiop ? LLSD(gAudiop->getDriverName(want_fullname)) : "Undefined";  	if(LLVoiceClient::getInstance()->voiceEnabled())  	{ -		LLVoiceVersionInfo version = LLVoiceClient::getInstance()->getVersion(); +        LLVoiceVersionInfo version = LLVoiceClient::getInstance()->getVersion(); +        const std::string build_version = version.mBuildVersion;  		std::ostringstream version_string; -		version_string << version.serverType << " " << version.serverVersion << std::endl; +        if (std::equal(build_version.begin(), build_version.begin() + version.serverVersion.size(), +                       version.serverVersion.begin())) +        {  // Normal case: Show type and build version. +            version_string << version.serverType << " " << build_version << std::endl; +        } +        else +        {  // Mismatch: Show both versions. +            version_string << version.serverVersion << "/" << build_version << std::endl; +        }  		info["VOICE_VERSION"] = version_string.str();  	}  	else diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index e2bd1a39c7..d8b8b8749f 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -200,6 +200,7 @@ const LLVoiceVersionInfo LLVoiceClient::getVersion()  		LLVoiceVersionInfo result;  		result.serverVersion = std::string();  		result.serverType = std::string(); +		result.mBuildVersion = std::string();  		return result;  	}  } diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index cf527a4464..246883b611 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -95,6 +95,7 @@ struct LLVoiceVersionInfo  {  	std::string serverType;  	std::string serverVersion; +	std::string mBuildVersion;  };  ////////////////////////////////// diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index c7a544f8eb..456537de28 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -4548,6 +4548,23 @@ void LLVivoxVoiceClient::sessionNotificationEvent(std::string &sessionHandle, st  	}  } +void LLVivoxVoiceClient::voiceServiceConnectionStateChangedEvent(int statusCode, std::string &statusString, std::string &build_id) +{ +	// We don't generally need to process this. However, one occurence is when we first connect, and so it is the +	// earliest opportunity to learn what we're connected to. +	if (statusCode) +	{ +		LL_WARNS("Voice") << "VoiceServiceConnectionStateChangedEvent statusCode: " << statusCode << +			"statusString: " << statusString << LL_ENDL; +		return; +	} +	if (build_id.empty()) +	{ +		return; +	} +	mVoiceVersion.mBuildVersion = build_id; +} +  void LLVivoxVoiceClient::auxAudioPropertiesEvent(F32 energy)  {  	LL_DEBUGS("VoiceEnergy") << "got energy " << energy << LL_ENDL; @@ -7528,6 +7545,8 @@ void LLVivoxProtocolParser::EndTag(const char *tag)  			connectorHandle = string;  		else if (!stricmp("VersionID", tag))  			versionID = string; +		else if (!stricmp("Version", tag)) +			mBuildID = string;  		else if (!stricmp("AccountHandle", tag))  			accountHandle = string;  		else if (!stricmp("State", tag)) @@ -7830,7 +7849,8 @@ void LLVivoxProtocolParser::processResponse(std::string tag)  			// We don't need to process this, but we also shouldn't warn on it, since that confuses people.  		}  		else if (!stricmp(eventTypeCstr, "VoiceServiceConnectionStateChangedEvent")) -		{	// Yet another ignored event +		{ +			LLVivoxVoiceClient::getInstance()->voiceServiceConnectionStateChangedEvent(statusCode, statusString, mBuildID);  		}  		else if (!stricmp(eventTypeCstr, "AudioDeviceHotSwapEvent"))  		{ diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h index cf30a4e86a..ebc3a62c35 100644 --- a/indra/newview/llvoicevivox.h +++ b/indra/newview/llvoicevivox.h @@ -465,6 +465,7 @@ protected:  	void participantAddedEvent(std::string &sessionHandle, std::string &sessionGroupHandle, std::string &uriString, std::string &alias, std::string &nameString, std::string &displayNameString, int participantType);  	void participantRemovedEvent(std::string &sessionHandle, std::string &sessionGroupHandle, std::string &uriString, std::string &alias, std::string &nameString);  	void participantUpdatedEvent(std::string &sessionHandle, std::string &sessionGroupHandle, std::string &uriString, std::string &alias, bool isModeratorMuted, bool isSpeaking, int volume, F32 energy); +	void voiceServiceConnectionStateChangedEvent(int statusCode, std::string &statusString, std::string &build_id);  	void auxAudioPropertiesEvent(F32 energy);  	void messageEvent(std::string &sessionHandle, std::string &uriString, std::string &alias, std::string &messageHeader, std::string &messageBody, std::string &applicationString);  	void sessionNotificationEvent(std::string &sessionHandle, std::string &uriString, std::string ¬ificationType); @@ -969,6 +970,7 @@ protected:  	std::string		actionString;  	std::string		connectorHandle;  	std::string		versionID; +	std::string		mBuildID;  	std::string		accountHandle;  	std::string		sessionHandle;  	std::string		sessionGroupHandle; | 
