summaryrefslogtreecommitdiff
path: root/indra/newview/llfloaterhardwaresettings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfloaterhardwaresettings.cpp')
-rw-r--r--indra/newview/llfloaterhardwaresettings.cpp185
1 files changed, 80 insertions, 105 deletions
diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp
index 00dcf67453..3cd3c74ee4 100644
--- a/indra/newview/llfloaterhardwaresettings.cpp
+++ b/indra/newview/llfloaterhardwaresettings.cpp
@@ -2,69 +2,67 @@
* @file llfloaterhardwaresettings.cpp
* @brief Menu of all the different graphics hardware settings
*
- * $LicenseInfo:firstyear=2001&license=viewergpl$
- *
- * Copyright (c) 2001-2007, Linden Research, Inc.
- *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
* Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlife.com/developers/opensource/gplv2
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
*
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at http://secondlife.com/developers/opensource/flossexception
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
*
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
#include "llviewerprecompiledheaders.h"
#include "llfloaterhardwaresettings.h"
+
+// Viewer includes
#include "llfloaterpreference.h"
#include "llviewerwindow.h"
#include "llviewercontrol.h"
-#include "llviewerimagelist.h"
+#include "llviewertexturelist.h"
#include "llfeaturemanager.h"
#include "llstartup.h"
-
-#include "llradiogroup.h"
-#include "llvieweruictrlfactory.h"
-
-#include "llimagegl.h"
#include "pipeline.h"
-LLFloaterHardwareSettings* LLFloaterHardwareSettings::sHardwareSettings = NULL;
-
-LLFloaterHardwareSettings::LLFloaterHardwareSettings() : LLFloater("Hardware Settings Floater")
+// Linden library includes
+#include "llradiogroup.h"
+#include "lluictrlfactory.h"
+#include "llwindow.h"
+#include "llsliderctrl.h"
+
+LLFloaterHardwareSettings::LLFloaterHardwareSettings(const LLSD& key)
+ : LLFloater(key),
+
+ // these should be set on imminent refresh() call,
+ // but init them anyway
+ mUseVBO(0),
+ mUseAniso(0),
+ mUseFBO(0),
+ mFSAASamples(0),
+ mGamma(0.0),
+ mVideoCardMem(0),
+ mFogRatio(0.0),
+ mProbeHardwareOnStartup(FALSE)
{
- gUICtrlFactory->buildFloater(this, "floater_hardware_settings.xml");
-
- // load it up
- initCallbacks();
}
LLFloaterHardwareSettings::~LLFloaterHardwareSettings()
{
}
-void LLFloaterHardwareSettings::onClickHelp(void* data)
-{
- const char* xml_alert = "HardwareSettingsHelpButton";
- gViewerWindow->alertXml(xml_alert);
-}
-
void LLFloaterHardwareSettings::initCallbacks(void)
{
}
@@ -77,95 +75,54 @@ void LLFloaterHardwareSettings::refresh()
mUseVBO = gSavedSettings.getBOOL("RenderVBOEnable");
mUseAniso = gSavedSettings.getBOOL("RenderAnisotropic");
+ mUseFBO = gSavedSettings.getBOOL("RenderUseFBO");
+ mFSAASamples = gSavedSettings.getU32("RenderFSAASamples");
mGamma = gSavedSettings.getF32("RenderGamma");
mVideoCardMem = gSavedSettings.getS32("TextureMemory");
mFogRatio = gSavedSettings.getF32("RenderFogRatio");
mProbeHardwareOnStartup = gSavedSettings.getBOOL("ProbeHardwareOnStartup");
+ getChild<LLUICtrl>("fsaa")->setValue((LLSD::Integer) mFSAASamples);
refreshEnabledState();
}
void LLFloaterHardwareSettings::refreshEnabledState()
{
- S32 min_tex_mem = LLViewerImageList::getMinVideoRamSetting();
- S32 max_tex_mem = LLViewerImageList::getMaxVideoRamSetting();
- childSetMinValue("GrapicsCardTextureMemory", min_tex_mem);
- childSetMaxValue("GrapicsCardTextureMemory", max_tex_mem);
+ S32 min_tex_mem = LLViewerTextureList::getMinVideoRamSetting();
+ S32 max_tex_mem = LLViewerTextureList::getMaxVideoRamSetting();
+ getChild<LLSliderCtrl>("GraphicsCardTextureMemory")->setMinValue(min_tex_mem);
+ getChild<LLSliderCtrl>("GraphicsCardTextureMemory")->setMaxValue(max_tex_mem);
- if (!gFeatureManagerp->isFeatureAvailable("RenderVBOEnable") ||
+ if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderVBOEnable") ||
!gGLManager.mHasVertexBufferObject)
{
- childSetEnabled("vbo", FALSE);
+ getChildView("vbo")->setEnabled(FALSE);
}
// if no windlight shaders, turn off nighttime brightness, gamma, and fog distance
- childSetEnabled("gamma", !gPipeline.canUseWindLightShaders());
- childSetEnabled("(brightness, lower is brighter)", !gPipeline.canUseWindLightShaders());
- childSetEnabled("fog", !gPipeline.canUseWindLightShaders());
-
-}
-
-// static instance of it
-LLFloaterHardwareSettings* LLFloaterHardwareSettings::instance()
-{
- if (!sHardwareSettings)
+ getChildView("gamma")->setEnabled(!gPipeline.canUseWindLightShaders());
+ getChildView("(brightness, lower is brighter)")->setEnabled(!gPipeline.canUseWindLightShaders());
+ getChildView("fog")->setEnabled(!gPipeline.canUseWindLightShaders());
+ getChildView("fsaa")->setEnabled(gPipeline.canUseAntiAliasing());
+ /* Enable to reset fsaa value to disabled when feature is not available.
+ if (!gPipeline.canUseAntiAliasing())
{
- sHardwareSettings = new LLFloaterHardwareSettings();
- sHardwareSettings->close();
+ getChild<LLUICtrl>("fsaa")->setValue((LLSD::Integer) 0);
}
- return sHardwareSettings;
+ */
}
-void LLFloaterHardwareSettings::show()
-{
- LLFloaterHardwareSettings* hardSettings = instance();
- hardSettings->refresh();
- hardSettings->center();
-
- // comment in if you want the menu to rebuild each time
- //gUICtrlFactory->buildFloater(hardSettings, "floater_hardware_settings.xml");
- //hardSettings->initCallbacks();
-
- hardSettings->open();
-}
-
-bool LLFloaterHardwareSettings::isOpen()
-{
- if (sHardwareSettings != NULL)
- {
- return true;
- }
- return false;
-}
-
-// virtual
-void LLFloaterHardwareSettings::onClose(bool app_quitting)
-{
- if (sHardwareSettings)
- {
- sHardwareSettings->setVisible(FALSE);
- }
-}
-
//============================================================================
BOOL LLFloaterHardwareSettings::postBuild()
{
- requires("ani", WIDGET_TYPE_CHECKBOX);
- requires("gamma", WIDGET_TYPE_SPINNER);
- requires("vbo", WIDGET_TYPE_CHECKBOX);
- requires("GrapicsCardTextureMemory", WIDGET_TYPE_SLIDER);
- requires("fog", WIDGET_TYPE_SPINNER);
-
- if (!checkRequirements())
- {
- return FALSE;
- }
-
childSetAction("OK", onBtnOK, this);
refresh();
+ center();
+ // load it up
+ initCallbacks();
return TRUE;
}
@@ -174,10 +131,25 @@ void LLFloaterHardwareSettings::apply()
{
// Anisotropic rendering
BOOL old_anisotropic = LLImageGL::sGlobalUseAnisotropic;
- LLImageGL::sGlobalUseAnisotropic = childGetValue("ani");
- if (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)
{
- BOOL logged_in = (LLStartUp::getStartupState() >= STATE_STARTED);
gViewerWindow->restartDisplay(logged_in);
}
@@ -189,12 +161,14 @@ void LLFloaterHardwareSettings::cancel()
{
gSavedSettings.setBOOL("RenderVBOEnable", mUseVBO);
gSavedSettings.setBOOL("RenderAnisotropic", mUseAniso);
+ gSavedSettings.setBOOL("RenderUseFBO", mUseFBO);
+ gSavedSettings.setU32("RenderFSAASamples", mFSAASamples);
gSavedSettings.setF32("RenderGamma", mGamma);
gSavedSettings.setS32("TextureMemory", mVideoCardMem);
gSavedSettings.setF32("RenderFogRatio", mFogRatio);
gSavedSettings.setBOOL("ProbeHardwareOnStartup", mProbeHardwareOnStartup );
- close();
+ closeFloater();
}
// static
@@ -202,6 +176,7 @@ void LLFloaterHardwareSettings::onBtnOK( void* userdata )
{
LLFloaterHardwareSettings *fp =(LLFloaterHardwareSettings *)userdata;
fp->apply();
- fp->close(false);
+ fp->closeFloater(false);
}
+