diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp index 7e255299c7db541b4773a87195a2310dc4935cc7..906f19203cfc6caa824586a2ffa604dc549431e5 100644 --- a/indra/llaudio/llaudiodecodemgr.cpp +++ b/indra/llaudio/llaudiodecodemgr.cpp @@ -800,7 +800,11 @@ BOOL LLAudioDecodeMgr::addDecodeRequest(const LLUUID &uuid) { // Just put it on the decode queue. LL_DEBUGS("AudioEngine") << "addDecodeRequest for " << uuid << " has local asset file already" << LL_ENDL; - mImpl->mDecodeQueue.push_back(uuid); + // ...only add it if it's note already in the queue + if (std::find(mImpl->mDecodeQueue.begin(), mImpl->mDecodeQueue.end(), uuid) == mImpl->mDecodeQueue.end()) + { + mImpl->mDecodeQueue.push_back(uuid); + } return TRUE; } diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp index fc670c88fe3fc5ef8ea9f86c1b161061f6c03c8c..e9647bbbb115385bcdf3f119eb8858dfc609e2e3 100644 --- a/indra/llaudio/llaudioengine.cpp +++ b/indra/llaudio/llaudioengine.cpp @@ -1911,6 +1911,16 @@ bool LLAudioData::load() gAudiop->cleanupBuffer(mBufferp); mBufferp = NULL; + if (!gDirUtilp->fileExists(wav_path)) + { + mHasLocalData = false; + mHasDecodedData = false; + mHasCompletedDecode = false; + mHasDecodeFailed = false; + mHasWAVLoadFailed = false; + gAudiop->preloadSound(mID); + } + return false; } mBufferp->mAudioDatap = this;