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 | |
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')
-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); } |