diff options
| author | Monroe Linden <monroe@lindenlab.com> | 2009-11-09 18:41:55 -0800 | 
|---|---|---|
| committer | Monroe Linden <monroe@lindenlab.com> | 2009-11-09 18:41:55 -0800 | 
| commit | ca1356d4655223781b5e317b430c67fcb081249c (patch) | |
| tree | c15e10885a8568cd64c85054e374680992aab29d /indra/newview | |
| parent | 4be7fa99e743732942a412fac5db4770d198999d (diff) | |
LLViewerMediaImpl now keeps track of which instance is the current parcel media instance.
The active parcel media instance always gets priority over other inworld media.
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llviewermedia.cpp | 15 | ||||
| -rw-r--r-- | indra/newview/llviewermedia.h | 8 | ||||
| -rw-r--r-- | indra/newview/llviewerparcelmedia.cpp | 2 | 
3 files changed, 21 insertions, 4 deletions
| diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 11c1fcb1ea..69650425cb 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -459,12 +459,12 @@ LLViewerMedia::impl_list &LLViewerMedia::getPriorityList()  // This is the predicate function used to sort sViewerMediaImplList by priority.  bool LLViewerMedia::priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2)  { -	if(i1->isForcedUnloaded()) +	if(i1->isForcedUnloaded() && !i2->isForcedUnloaded())  	{  		// Muted or failed items always go to the end of the list, period.  		return false;  	} -	else if(i2->isForcedUnloaded()) +	else if(i2->isForcedUnloaded() && !i1->isForcedUnloaded())  	{  		// Muted or failed items always go to the end of the list, period.  		return true; @@ -489,6 +489,16 @@ bool LLViewerMedia::priorityComparitor(const LLViewerMediaImpl* i1, const LLView  		// i2 is a UI element, i1 is not.  This makes i2 "less than" i1, so it sorts earlier in our list.  		return false;  	} +	else if(i1->isParcelMedia()) +	{ +		// The parcel media impl sorts above all other inworld media, unless one has focus. +		return true; +	} +	else if(i2->isParcelMedia()) +	{ +		// The parcel media impl sorts above all other inworld media, unless one has focus. +		return false; +	}  	else  	{  		// The object with the larger interest value should be earlier in the list, so we reverse the sense of the comparison here. @@ -686,6 +696,7 @@ LLViewerMediaImpl::LLViewerMediaImpl(	  const LLUUID& texture_id,  	mPreviousMediaState(MEDIA_NONE),  	mPreviousMediaTime(0.0f),  	mIsDisabled(false), +	mIsParcelMedia(false),  	mProximity(-1),  	mIsUpdated(false)  {  diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 7cbfb56ffc..3f5f3ca746 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -191,14 +191,17 @@ public:  	bool isMediaPlaying();  	bool isMediaPaused();  	bool hasMedia(); -	bool isMediaFailed() { return mMediaSourceFailed; }; +	bool isMediaFailed() const { return mMediaSourceFailed; };  	void resetPreviousMediaState();  	void setDisabled(bool disabled) { mIsDisabled = disabled; }; -	bool isMediaDisabled() { return mIsDisabled; }; +	bool isMediaDisabled() const { return mIsDisabled; };  	// returns true if this instance should not be loaded (disabled, muted object, crashed, etc.)  	bool isForcedUnloaded() const; +	 +	void setIsParcelMedia(bool is_parcel_media) { mIsParcelMedia = is_parcel_media; }; +	bool isParcelMedia() const { return mIsParcelMedia; };  	ECursorType getLastSetCursor() { return mLastSetCursor; }; @@ -326,6 +329,7 @@ public:  	int mPreviousMediaState;  	F64 mPreviousMediaTime;  	bool mIsDisabled; +	bool mIsParcelMedia;  	S32 mProximity;  private: diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index 6233a337a6..336d7f684e 100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -226,6 +226,7 @@ void LLViewerParcelMedia::play(LLParcel* parcel)  				media_height,   				media_auto_scale,  				media_loop); +			sMediaImpl->setIsParcelMedia(true);  			sMediaImpl->navigateTo(media_url, mime_type, true);  		}  	} @@ -240,6 +241,7 @@ void LLViewerParcelMedia::play(LLParcel* parcel)  			media_height,   			media_auto_scale,  			media_loop); +		sMediaImpl->setIsParcelMedia(true);  		sMediaImpl->navigateTo(media_url, mime_type, true);  	} | 
