summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2010-10-21 14:24:03 -0500
committerDave Parks <davep@lindenlab.com>2010-10-21 14:24:03 -0500
commit450c28e02b9e9e985f56e3fc013401de30c42253 (patch)
tree501a71fbe38eafd0c5e3f967b7a36a2953e0878a
parent06c2c70abf60a89e22341cdc27c3aa5329569a5f (diff)
Fix for crash when toggling anisotropic filtering.
-rw-r--r--indra/llrender/llimagegl.h1
-rw-r--r--indra/newview/llfloaterhardwaresettings.cpp24
-rw-r--r--indra/newview/llviewercontrol.cpp8
3 files changed, 9 insertions, 24 deletions
diff --git a/indra/llrender/llimagegl.h b/indra/llrender/llimagegl.h
index 87a835cdcc..6c980984c0 100644
--- a/indra/llrender/llimagegl.h
+++ b/indra/llrender/llimagegl.h
@@ -64,6 +64,7 @@ public:
// Save off / restore GL textures
static void destroyGL(BOOL save_state = TRUE);
static void restoreGL();
+ static void dirtyTexOptions();
// Sometimes called externally for textures not using LLImageGL (should go away...)
static S32 updateBoundTexMem(const S32 mem, const S32 ncomponents, S32 category) ;
diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp
index 3cd3c74ee4..dc573e1433 100644
--- a/indra/newview/llfloaterhardwaresettings.cpp
+++ b/indra/newview/llfloaterhardwaresettings.cpp
@@ -129,30 +129,6 @@ BOOL LLFloaterHardwareSettings::postBuild()
void LLFloaterHardwareSettings::apply()
{
- // Anisotropic rendering
- BOOL old_anisotropic = LLImageGL::sGlobalUseAnisotropic;
- LLImageGL::sGlobalUseAnisotropic = getChild<LLUICtrl>("ani")->getValue();
-
- U32 fsaa = (U32) getChild<LLUICtrl>("fsaa")->getValue().asInteger();
- U32 old_fsaa = gSavedSettings.getU32("RenderFSAASamples");
-
- BOOL logged_in = (LLStartUp::getStartupState() >= STATE_STARTED);
-
- if (old_fsaa != fsaa)
- {
- gSavedSettings.setU32("RenderFSAASamples", fsaa);
- LLWindow* window = gViewerWindow->getWindow();
- LLCoordScreen size;
- window->getSize(&size);
- gViewerWindow->changeDisplaySettings(size,
- gSavedSettings.getBOOL("DisableVerticalSync"),
- logged_in);
- }
- else if (old_anisotropic != LLImageGL::sGlobalUseAnisotropic)
- {
- gViewerWindow->restartDisplay(logged_in);
- }
-
refresh();
}
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 416553ff08..131c712241 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -177,6 +177,13 @@ static bool handleReleaseGLBufferChanged(const LLSD& newvalue)
return true;
}
+static bool handleAnisotropicChanged(const LLSD& newvalue)
+{
+ LLImageGL::sGlobalUseAnisotropic = newvalue.asBoolean();
+ LLImageGL::dirtyTexOptions();
+ return true;
+}
+
static bool handleVolumeLODChanged(const LLSD& newvalue)
{
LLVOVolume::sLODFactor = (F32) newvalue.asReal();
@@ -549,6 +556,7 @@ void settings_setup_listeners()
gSavedSettings.getControl("RenderSpecularResY")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderSpecularExponent")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderFSAASamples")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
+ gSavedSettings.getControl("RenderAnisotropic")->getSignal()->connect(boost::bind(&handleAnisotropicChanged, _2));
gSavedSettings.getControl("RenderShadowResolutionScale")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleReleaseGLBufferChanged, _2));
gSavedSettings.getControl("RenderGlow")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2));