diff options
author | Ansariel Hiller <Ansariel@users.noreply.github.com> | 2024-07-27 17:09:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-27 18:09:58 +0300 |
commit | 266553913f134755c021bf509cda55fb96a07e1a (patch) | |
tree | 24f159668003396f1ee217756a5a566f46dda986 /indra/llaudio | |
parent | 42b1cedc85b52571f411af3e896e005bdf92657a (diff) |
Fix running multiple viewer instances stealing sound from first instance (#2127)
Diffstat (limited to 'indra/llaudio')
-rwxr-xr-x | indra/llaudio/llaudiodecodemgr.cpp | 7 | ||||
-rw-r--r-- | indra/llaudio/llaudioengine.cpp | 12 |
2 files changed, 16 insertions, 3 deletions
diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp index a46f9acc63..d8a6fffea6 100755 --- a/indra/llaudio/llaudiodecodemgr.cpp +++ b/indra/llaudio/llaudiodecodemgr.cpp @@ -790,9 +790,12 @@ bool LLAudioDecodeMgr::addDecodeRequest(const LLUUID &uuid) if (gAssetStorage->hasLocalAsset(uuid, LLAssetType::AT_SOUND)) { - // Just put it on the decode queue. + // Just put it on the decode queue it if it's not already in the queue LL_DEBUGS("AudioEngine") << "addDecodeRequest for " << uuid << " has local asset file already" << LL_ENDL; - mImpl->mDecodeQueue.push_back(uuid); + if (std::find(mImpl->mDecodeQueue.begin(), mImpl->mDecodeQueue.end(), uuid) == mImpl->mDecodeQueue.end()) + { + mImpl->mDecodeQueue.emplace_back(uuid); + } return true; } diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp index 3697422ac8..613c408157 100644 --- a/indra/llaudio/llaudioengine.cpp +++ b/indra/llaudio/llaudioengine.cpp @@ -1827,7 +1827,17 @@ bool LLAudioData::load() { // Hrm. Right now, let's unset the buffer, since it's empty. gAudiop->cleanupBuffer(mBufferp); - mBufferp = NULL; + mBufferp = nullptr; + + if (!gDirUtilp->fileExists(wav_path)) + { + mHasLocalData = false; + mHasDecodedData = false; + mHasCompletedDecode = false; + mHasDecodeFailed = false; + mHasWAVLoadFailed = false; + gAudiop->preloadSound(mID); + } return false; } |