diff options
-rw-r--r-- | indra/newview/llagent.cpp | 5 | ||||
-rw-r--r-- | indra/newview/llviewermedia.cpp | 18 | ||||
-rw-r--r-- | indra/newview/llviewermedia.h | 4 |
3 files changed, 20 insertions, 7 deletions
diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index f1eb942b52..2354323a66 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -5981,11 +5981,6 @@ bool LLAgent::teleportCore(bool is_local) // This was breaking the case of teleporting within a single sim. Backing it out for now. // gVoiceClient->leaveChannel(); - // Clear the "tentative" autoplay flag (i.e. set it to true) - // XXX: Do we also want to re-enable all media, because we might teleport - // somewhere where that media would still exist? - gSavedSettings.setBOOL("MediaTentativeAutoPlay", true); - return true; } diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index c4f2f0eed7..1b6236ce4a 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -262,6 +262,7 @@ static const F32 LLVIEWERMEDIA_CREATE_DELAY = 1.0f; static F32 sGlobalVolume = 1.0f; static F64 sLowestLoadableImplInterest = 0.0f; static bool sAnyMediaShowing = false; +static boost::signals2::connection sTeleportFinishConnection; ////////////////////////////////////////////////////////////////////////////////////////// static void add_media_impl(LLViewerMediaImpl* media) @@ -863,6 +864,10 @@ void LLViewerMedia::updateMedia(void *dummy_arg) total_cpu += pimpl->getCPUUsage(); + // Only set sAnyMedia​Showing if it isn't used in the UI. If it isn't + // parcel media, do the normal "hasMedia()" check. If it is parcel media, + // hasMedia() seems to always be true, so we do some other checks to see + // if there actually is parcel media showing if (!pimpl->getUsedInUI()) { if (! pimpl->isParcelMedia()) @@ -951,7 +956,9 @@ void LLViewerMedia::setAllMediaEnabled(bool val) // static void LLViewerMedia::initClass() { - gIdleCallbacks.addFunction(LLViewerMedia::updateMedia, NULL); + gIdleCallbacks.addFunction(LLViewerMedia::updateMedia, NULL); + sTeleportFinishConnection = LLViewerParcelMgr::getInstance()-> + setTeleportFinishedCallback(boost::bind(&LLViewerMedia::onTeleportFinished)); } ////////////////////////////////////////////////////////////////////////////////////////// @@ -959,6 +966,15 @@ void LLViewerMedia::initClass() void LLViewerMedia::cleanupClass() { gIdleCallbacks.deleteFunction(LLViewerMedia::updateMedia, NULL); + sTeleportFinishConnection.disconnect(); +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::onTeleportFinished() +{ + // On teleport, clear this setting (i.e. set it to true) + gSavedSettings.setBOOL("MediaTentativeAutoPlay", true); } ////////////////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index c9e9017e5a..b90f64adc0 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -124,7 +124,9 @@ class LLViewerMedia // This is the comparitor used to sort the list. static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2); - + + private: + static void onTeleportFinished(); }; // Implementation functions not exported into header file |