From d47f604e63b8510cc997f78a03241c95726c750a Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 2 May 2017 14:32:34 -0400 Subject: VOICE-47: Disconnect from voice during teleport to prevent audio artifacts --- indra/newview/llvoiceclient.cpp | 20 ++++++++++++++++---- indra/newview/llvoicevivox.cpp | 22 ++++++++++++++++------ 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index f78a6edc80..503815e2ed 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -419,24 +419,36 @@ void LLVoiceClient::setNonSpatialChannel( const std::string &uri, const std::string &credentials) { - if (mVoiceModule) mVoiceModule->setNonSpatialChannel(uri, credentials); + if (mVoiceModule) + { + mVoiceModule->setNonSpatialChannel(uri, credentials); + } } void LLVoiceClient::setSpatialChannel( const std::string &uri, const std::string &credentials) { - if (mVoiceModule) mVoiceModule->setSpatialChannel(uri, credentials); + if (mVoiceModule) + { + mVoiceModule->setSpatialChannel(uri, credentials); + } } void LLVoiceClient::leaveNonSpatialChannel() { - if (mVoiceModule) mVoiceModule->leaveNonSpatialChannel(); + if (mVoiceModule) + { + mVoiceModule->leaveNonSpatialChannel(); + } } void LLVoiceClient::leaveChannel(void) { - if (mVoiceModule) mVoiceModule->leaveChannel(); + if (mVoiceModule) + { + mVoiceModule->leaveChannel(); + } } std::string LLVoiceClient::getCurrentChannel() diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index b13f9a22aa..a7658fe0be 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -1637,8 +1637,9 @@ bool LLVivoxVoiceClient::runSession(const sessionStatePtr_t &session) notifyStatusObservers(LLVoiceClientStatusObserver::ERROR_UNKNOWN); if (mSessionTerminateRequested) + { terminateAudioSession(true); - + } // if a relog has been requested then addAndJoineSession // failed in a spectacular way and we need to back out. // If this is not the case then we were simply trying to @@ -2645,9 +2646,16 @@ static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVe void LLVivoxVoiceClient::setHidden(bool hidden) { mHidden = hidden; - - sendPositionAndVolumeUpdate(); - return; + + if (mHidden && inSpatialChannel()) + { + // get out of the channel entirely + leaveAudioSession(); + } + else + { + sendPositionAndVolumeUpdate(); + } } void LLVivoxVoiceClient::sendPositionAndVolumeUpdate(void) @@ -2863,7 +2871,7 @@ void LLVivoxVoiceClient::sendPositionAndVolumeUpdate(void) } } } - + //sendLocalAudioUpdates(); obsolete, used to send volume setting on position updates std::string update(stream.str()); if(!update.empty()) @@ -4768,8 +4776,10 @@ bool LLVivoxVoiceClient::inSpatialChannel(void) bool result = false; if(mAudioSession) + { result = mAudioSession->mIsSpatial; - + } + return result; } -- cgit v1.2.3