Testing: Be a bit more OCD about avoiding starting new streams before the previous one has been successfully been released.

This commit is contained in:
Shyotl
2013-05-03 14:32:18 -05:00
parent 701fc87c05
commit 808341e184
2 changed files with 33 additions and 9 deletions

View File

@@ -107,10 +107,18 @@ void LLStreamingAudio_FMODEX::start(const std::string& url)
if (!url.empty())
{
llinfos << "Starting internet stream: " << url << llendl;
mCurrentInternetStreamp = new LLAudioStreamManagerFMODEX(mSystem,url);
mURL = url;
mMetaData = new LLSD;
if(mDeadStreams.empty())
{
llinfos << "Starting internet stream: " << url << llendl;
mCurrentInternetStreamp = new LLAudioStreamManagerFMODEX(mSystem,url);
mURL = url;
mMetaData = new LLSD;
}
else
{
llinfos << "Deferring stream load until buffer release: " << url << llendl;
mPendingURL = url;
}
}
else
{
@@ -139,6 +147,22 @@ void LLStreamingAudio_FMODEX::update()
}
}
if(!mDeadStreams.empty())
{
llassert_always(mCurrentInternetStreamp == NULL);
return;
}
if(!mPendingURL.empty())
{
llassert_always(mCurrentInternetStreamp == NULL);
llinfos << "Starting internet stream: " << mPendingURL << llendl;
mCurrentInternetStreamp = new LLAudioStreamManagerFMODEX(mSystem,mPendingURL);
mURL = mPendingURL;
mMetaData = new LLSD;
mPendingURL.clear();
}
// Don't do anything if there are no streams playing
if (!mCurrentInternetStreamp)
{
@@ -269,6 +293,8 @@ void LLStreamingAudio_FMODEX::update()
void LLStreamingAudio_FMODEX::stop()
{
mPendingURL.clear();
if(mMetaData)
{
delete mMetaData;
@@ -327,7 +353,7 @@ int LLStreamingAudio_FMODEX::isPlaying()
{
return 1; // Active and playing
}
else if (!mURL.empty())
else if (!mURL.empty() || !mPendingURL.empty())
{
return 2; // "Paused"
}
@@ -439,8 +465,6 @@ bool LLAudioStreamManagerFMODEX::stopStream()
{
if (mInternetStream)
{
bool close = true;
switch (getOpenState())
{
@@ -455,9 +479,8 @@ bool LLAudioStreamManagerFMODEX::stopStream()
close = true;
}
if (close)
if (close && mInternetStream->release() == FMOD_OK)
{
mInternetStream->release();
mStreamChannel = NULL;
mInternetStream = NULL;
return true;

View File

@@ -77,6 +77,7 @@ private:
std::list<LLAudioStreamManagerFMODEX *> mDeadStreams;
std::string mURL;
std::string mPendingURL;
F32 mGain;
LLSD *mMetaData;