diff options
| author | Xiaohong Bao <bao@lindenlab.com> | 2011-12-06 16:46:58 -0700 | 
|---|---|---|
| committer | Xiaohong Bao <bao@lindenlab.com> | 2011-12-06 16:46:58 -0700 | 
| commit | 04bee016c8f33ff98b40c2b3d237f5ded1453284 (patch) | |
| tree | 22d54b602823d0b6cd97890da8994babdc0bfef0 | |
| parent | 22e46e4be76a448a27c59fedfeb84081d6624df8 (diff) | |
| parent | 1a18184f50a3c98573ceb06d6ff3ca7bd42f6fc3 (diff) | |
Automated merge with https://bitbucket.org/VirLinden/viewer-development-shining-fixes
| -rw-r--r-- | indra/llaudio/llaudioengine.cpp | 23 | ||||
| -rw-r--r-- | indra/llaudio/llaudioengine.h | 1 | 
2 files changed, 20 insertions, 4 deletions
| diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp index 5e540ad8c5..5fa28cb902 100644 --- a/indra/llaudio/llaudioengine.cpp +++ b/indra/llaudio/llaudioengine.cpp @@ -1264,6 +1264,7 @@ LLAudioSource::LLAudioSource(const LLUUID& id, const LLUUID& owner_id, const F32  	mSyncSlave(false),  	mQueueSounds(false),  	mPlayedOnce(false), +	mCorrupted(false),  	mType(type),  	mChannelp(NULL),  	mCurrentDatap(NULL), @@ -1296,16 +1297,25 @@ void LLAudioSource::setChannel(LLAudioChannel *channelp)  void LLAudioSource::update()  { +	if(mCorrupted) +	{ +		return ; //no need to update +	} +  	if (!getCurrentBuffer())  	{  		if (getCurrentData())  		{  			// Hack - try and load the sound.  Will do this as a callback  			// on decode later. -			if (getCurrentData()->load()) +			if (getCurrentData()->load() && getCurrentData()->getBuffer())  			{  				play(getCurrentData()->getID()); -			}			 +			} +			else +			{ +				mCorrupted = true ; +			}  		}  	}  } @@ -1421,6 +1431,11 @@ bool LLAudioSource::play(const LLUUID &audio_uuid)  bool LLAudioSource::isDone() const  { +	if(mCorrupted) +	{ +		return true ; +	} +  	const F32 MAX_AGE = 60.f;  	const F32 MAX_UNPLAYED_AGE = 15.f;  	const F32 MAX_MUTED_AGE = 11.f; @@ -1736,7 +1751,7 @@ LLAudioData::LLAudioData(const LLUUID &uuid) :  	}  } - +//return false when the audio file is corrupted.  bool LLAudioData::load()  {  	// For now, just assume we're going to use one buffer per audiodata. @@ -1752,7 +1767,7 @@ bool LLAudioData::load()  	{  		// No free buffers, abort.  		llinfos << "Not able to allocate a new audio buffer, aborting." << llendl; -		return false; +		return true;  	}  	std::string uuid_str; diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h index 30d2490635..a47ee7ca7c 100644 --- a/indra/llaudio/llaudioengine.h +++ b/indra/llaudio/llaudioengine.h @@ -334,6 +334,7 @@ protected:  	bool			mSyncSlave;  	bool			mQueueSounds;  	bool			mPlayedOnce; +	bool            mCorrupted;  	S32             mType;  	LLVector3d		mPositionGlobal;  	LLVector3		mVelocity; | 
