diff options
author | Rick Pasetto <rick@lindenlab.com> | 2009-12-01 18:45:40 -0800 |
---|---|---|
committer | Rick Pasetto <rick@lindenlab.com> | 2009-12-01 18:45:40 -0800 |
commit | b92fe4351c402759991c26510a2a35a3b4308999 (patch) | |
tree | facf85c7f117d80585270c50f715e14397ecd7db /indra/newview/llviewermedia.cpp | |
parent | 1db0d32133f97b03a632f03fa78e198b7f00866b (diff) | |
parent | 659dc5224e2f4b6ce90b4f739cc015befc098c12 (diff) |
Automated merge with ssh://rick@hg.lindenlab.com/skolb/media
Diffstat (limited to 'indra/newview/llviewermedia.cpp')
-rw-r--r-- | indra/newview/llviewermedia.cpp | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index d5fd23ac51..0bee2e3abb 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -45,6 +45,9 @@ #include "llviewertexturelist.h" #include "llvovolume.h" #include "llpluginclassmedia.h" +#include "llviewerwindow.h" +#include "llfocusmgr.h" +#include "llcallbacklist.h" #include "llevent.h" // LLSimpleListener #include "llnotificationsutil.h" @@ -747,6 +750,19 @@ void LLViewerMedia::updateMedia() impl_count_total++; } + // Overrides if the window is minimized or we lost focus (taking care + // not to accidentally "raise" the priority either) + if (!gViewerWindow->getActive() /* viewer window minimized? */ + && new_priority > LLPluginClassMedia::PRIORITY_HIDDEN) + { + new_priority = LLPluginClassMedia::PRIORITY_HIDDEN; + } + else if (!gFocusMgr.getAppHasFocus() /* viewer window lost focus? */ + && new_priority > LLPluginClassMedia::PRIORITY_LOW) + { + new_priority = LLPluginClassMedia::PRIORITY_LOW; + } + pimpl->setPriority(new_priority); if(pimpl->getUsedInUI()) @@ -783,11 +799,24 @@ void LLViewerMedia::updateMedia() } +// idle callback function...only here to provide a hop to updateMedia() +static void llviewermedia_updatemedia_thunk(void*) +{ + LLViewerMedia::updateMedia(); +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::initClass() +{ + gIdleCallbacks.addFunction(llviewermedia_updatemedia_thunk, NULL); +} + ////////////////////////////////////////////////////////////////////////////////////////// // static void LLViewerMedia::cleanupClass() { - // This is no longer necessary, since sViewerMediaImplList is no longer smart pointers. + gIdleCallbacks.deleteFunction(llviewermedia_updatemedia_thunk, NULL); } ////////////////////////////////////////////////////////////////////////////////////////// |