diff options
author | Roxie Linden <roxie@lindenlab.com> | 2024-08-09 11:59:31 -0700 |
---|---|---|
committer | Roxie Linden <roxie@lindenlab.com> | 2024-08-09 12:04:19 -0700 |
commit | 227b212dc67998098d09b7f15e852ed6cd7ac83a (patch) | |
tree | 8186343e4dcdc5e3f4a46415b3b04ff266a77749 /indra/newview | |
parent | 4e0819b2dc2f062a68cc32d5b1ec22214fb1fd28 (diff) |
Teleport to a region with a different voice server type causes failure in voice
When teleporting, the viewer 'hides' voice, effectively disabling it, until the teleport
has completed. It does this by instructing the voice module to hide and then unhide.
The problem was, it would instruct one voice module for one voice server type to hide,
and then after teleport, it would instruct the other voice module for the other voice
server type to unhide, resulting in one voice module being hidden.
When the user transitions back to a region with the initial voice module, it's hidden,
hence voice doesn't work.
The solution is to hide/unhide both voice modules.
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llvoiceclient.cpp | 6 | ||||
-rw-r--r-- | indra/newview/llvoicevivox.h | 3 | ||||
-rw-r--r-- | indra/newview/llvoicewebrtc.h | 3 |
3 files changed, 5 insertions, 7 deletions
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 495d521894..5132b9bb07 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -281,10 +281,8 @@ void LLVoiceClient::setNonSpatialVoiceModule(const std::string &voice_server_typ void LLVoiceClient::setHidden(bool hidden) { - if (mSpatialVoiceModule) - { - mSpatialVoiceModule->setHidden(hidden); - } + LLWebRTCVoiceClient::getInstance()->setHidden(hidden); + LLVivoxVoiceClient::getInstance()->setHidden(hidden); } void LLVoiceClient::terminate() diff --git a/indra/newview/llvoicevivox.h b/indra/newview/llvoicevivox.h index 64c2c87db6..f3e24df281 100644 --- a/indra/newview/llvoicevivox.h +++ b/indra/newview/llvoicevivox.h @@ -89,6 +89,8 @@ public: // Returns true if vivox has successfully logged in and is not in error state bool isVoiceWorking() const override; + void setHidden(bool hidden) override; // virtual + ///////////////////// /// @name Tuning //@{ @@ -760,7 +762,6 @@ private: LLSD getAudioSessionChannelInfo(); std::string getAudioSessionHandle(); - void setHidden(bool hidden) override; //virtual void sendPositionAndVolumeUpdate(void); void sendCaptureAndRenderDevices(); diff --git a/indra/newview/llvoicewebrtc.h b/indra/newview/llvoicewebrtc.h index f4ea329cb6..f699bd6df9 100644 --- a/indra/newview/llvoicewebrtc.h +++ b/indra/newview/llvoicewebrtc.h @@ -88,6 +88,7 @@ public: std::string sipURIFromID(const LLUUID &id) const override; LLSD getP2PChannelInfoTemplate(const LLUUID& id) const override; + void setHidden(bool hidden) override; // virtual /////////////////// /// @name Logging @@ -480,8 +481,6 @@ private: LLSD getAudioSessionChannelInfo(); - void setHidden(bool hidden) override; //virtual - void enforceTether(); void updateNeighboringRegions(); |