summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2011-10-20 14:20:12 -0500
committerDave Parks <davep@lindenlab.com>2011-10-20 14:20:12 -0500
commit1762cc49395d2596ab0788b2a4504abaefbe64db (patch)
tree6352a1cee331a171803a6994ddcc52b61be6c4d3 /indra
parent7fef84ca755b3f07eb9841fc1b904b185402317e (diff)
SH-2570 Don't minimize viewer when reloading shaders (revert hack that didn't work) and pause shader loading until after all feature masks have been applied when switching detail levels
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llfeaturemanager.cpp8
-rw-r--r--indra/newview/llviewershadermgr.cpp6
-rw-r--r--indra/newview/llviewershadermgr.h1
3 files changed, 10 insertions, 5 deletions
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp
index db9a0424c0..eb0cdf28c0 100644
--- a/indra/newview/llfeaturemanager.cpp
+++ b/indra/newview/llfeaturemanager.cpp
@@ -51,6 +51,7 @@
#include "llcontrol.h"
#include "llboost.h"
#include "llweb.h"
+#include "llviewershadermgr.h"
#if LL_WINDOWS
#include "lldxhardware.h"
@@ -662,8 +663,10 @@ void LLFeatureManager::applyFeatures(bool skipFeatures)
void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures)
{
- applyBaseMasks();
+ LLViewerShaderMgr::sSkipReload = true;
+ applyBaseMasks();
+
switch (level)
{
case 0:
@@ -684,6 +687,9 @@ void LLFeatureManager::setGraphicsLevel(S32 level, bool skipFeatures)
}
applyFeatures(skipFeatures);
+
+ LLViewerShaderMgr::sSkipReload = false;
+ LLViewerShaderMgr::instance()->setShaders();
}
void LLFeatureManager::applyBaseMasks()
diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp
index 50910e26e5..e50625af60 100644
--- a/indra/newview/llviewershadermgr.cpp
+++ b/indra/newview/llviewershadermgr.cpp
@@ -59,6 +59,7 @@ using std::make_pair;
using std::string;
BOOL LLViewerShaderMgr::sInitialized = FALSE;
+bool LLViewerShaderMgr::sSkipReload = false;
LLVector4 gShinyOrigin;
@@ -350,7 +351,7 @@ void LLViewerShaderMgr::setShaders()
//setShaders might be called redundantly by gSavedSettings, so return on reentrance
static bool reentrance = false;
- if (!gPipeline.mInitialized || !sInitialized || reentrance)
+ if (!gPipeline.mInitialized || !sInitialized || reentrance || sSkipReload)
{
return;
}
@@ -401,9 +402,6 @@ void LLViewerShaderMgr::setShaders()
if (gViewerWindow)
{
gViewerWindow->setCursor(UI_CURSOR_WAIT);
- //VICIOUS HACK -- some drivers will time out if we don't redraw the window within 2 seconds, and this operation can take awhile
- //minimizing tells the driver we won't be updating the window for a bit
- gViewerWindow->getWindow()->minimize();
}
// Lighting
diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h
index 26cef8cb3e..3f670dfb14 100644
--- a/indra/newview/llviewershadermgr.h
+++ b/indra/newview/llviewershadermgr.h
@@ -33,6 +33,7 @@ class LLViewerShaderMgr: public LLShaderMgr
{
public:
static BOOL sInitialized;
+ static bool sSkipReload;
LLViewerShaderMgr();
/* virtual */ ~LLViewerShaderMgr();