diff options
| -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;      } | 
