summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorMonroe Linden <monroe@lindenlab.com>2009-11-09 18:41:55 -0800
committerMonroe Linden <monroe@lindenlab.com>2009-11-09 18:41:55 -0800
commitca1356d4655223781b5e317b430c67fcb081249c (patch)
treec15e10885a8568cd64c85054e374680992aab29d /indra
parent4be7fa99e743732942a412fac5db4770d198999d (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.cpp15
-rw-r--r--indra/newview/llviewermedia.h8
-rw-r--r--indra/newview/llviewerparcelmedia.cpp2
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);
}