From 3c6c7c4138184740b8cfa5a458b0146cfcaf7218 Mon Sep 17 00:00:00 2001 From: Inusaito Sayori Date: Mon, 2 Jun 2014 23:20:30 -0400 Subject: [PATCH] [Preferences Refactor] Further cleanup Moves to visibility_control and enabled_control instead of using callbacks, this lightens the load on opening preferences, and makes them responsive even to debug settings changes Removes the moving m for meter text with draw distance, I don't think anyone cares if it's a little to the side of the number. Adjustment of tabs to spaces in xml. Return early when disabling unavailable settings if shaders are unavailable. Cuts back on single-call functions in favor of direct binds. --- indra/newview/llpaneldisplay.cpp | 383 ++++-------------- indra/newview/llpaneldisplay.h | 45 +- .../xui/en-us/panel_preferences_graphics1.xml | 197 +++++---- 3 files changed, 181 insertions(+), 444 deletions(-) diff --git a/indra/newview/llpaneldisplay.cpp b/indra/newview/llpaneldisplay.cpp index 11ca3d4e1..a4de73c52 100644 --- a/indra/newview/llpaneldisplay.cpp +++ b/indra/newview/llpaneldisplay.cpp @@ -102,10 +102,12 @@ LLPanelDisplay::LLPanelDisplay() LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_graphics1.xml"); } +void updateSliderText(LLSliderCtrl* slider, LLTextBox* text_box); + BOOL LLPanelDisplay::postBuild() { // return to default values - getChild("Defaults")->setClickedCallback(boost::bind(&LLPanelDisplay::setHardwareDefaults)); + getChild("Defaults")->setClickedCallback(boost::bind(&LLPanelDisplay::setHardwareDefaults, this)); //============================================================================ // Resolution @@ -190,16 +192,16 @@ BOOL LLPanelDisplay::postBuild() aspect_ratio_text = llformat("%.3f", mAspectRatio); } + mCtrlAutoDetectAspect = getChild( "aspect_auto_detect"); + mCtrlAutoDetectAspect->setCommitCallback(boost::bind(&LLPanelDisplay::onCommitAutoDetectAspect,this,_2)); + mCtrlAspectRatio = getChild( "aspect_ratio"); - mCtrlAspectRatio->setTextEntryCallback(boost::bind(&LLPanelDisplay::onKeystrokeAspectRatio,this)); - mCtrlAspectRatio->setCommitCallback(boost::bind(&LLPanelDisplay::onSelectAspectRatio,this)); + mCtrlAspectRatio->setTextEntryCallback(boost::bind(&LLUICtrl::setValue, mCtrlAutoDetectAspect, false)); + mCtrlAspectRatio->setCommitCallback(boost::bind(&LLUICtrl::setValue, mCtrlAutoDetectAspect, false)); // add default aspect ratios mCtrlAspectRatio->add(aspect_ratio_text, &mAspectRatio, ADD_TOP); mCtrlAspectRatio->setCurrentByIndex(0); - mCtrlAutoDetectAspect = getChild( "aspect_auto_detect"); - mCtrlAutoDetectAspect->setCommitCallback(boost::bind(&LLPanelDisplay::onCommitAutoDetectAspect,this,_2)); - // radio performance box mCtrlSliderQuality = getChild("QualityPerformanceSelection"); mCtrlSliderQuality->setSliderMouseUpCallback(boost::bind(&LLPanelDisplay::onChangeQuality,this,_1)); @@ -207,11 +209,6 @@ BOOL LLPanelDisplay::postBuild() mCtrlCustomSettings = getChild("CustomSettings"); mCtrlCustomSettings->setCommitCallback(boost::bind(&LLPanelDisplay::onChangeCustom)); - //mGraphicsBorder = getChild("GraphicsBorder"); - - // Enable Transparent Water - mCtrlTransparentWater = getChild("TransparentWater"); - //---------------------------------------------------------------------------- // Enable Bump/Shiny mCtrlBumpShiny = getChild("BumpShiny"); @@ -247,11 +244,6 @@ BOOL LLPanelDisplay::postBuild() mCtrlAvatarCloth = getChild("AvatarCloth"); mCtrlAvatarImpostors = getChild("AvatarImpostors"); mCtrlAvatarImpostors->setCommitCallback(boost::bind(&LLPanelDisplay::onVertexShaderEnable)); - mCtrlNonImpostors = getChild("AvatarMaxVisible"); - - //---------------------------------------------------------------------------- - // Checkbox for lighting detail - mCtrlLightingDetail2 = getChild("LightingDetailRadio"); //---------------------------------------------------------------------------- // Checkbox for ambient occlusion @@ -269,69 +261,59 @@ BOOL LLPanelDisplay::postBuild() //============================================================================ // Object detail slider - mCtrlDrawDistance = getChild("DrawDistance"); - mDrawDistanceMeterText1 = getChild("DrawDistanceMeterText1"); - mDrawDistanceMeterText2 = getChild("DrawDistanceMeterText2"); - mCtrlDrawDistance->setCommitCallback(boost::bind(&LLPanelDisplay::updateMeterText, this)); - - // Object detail slider - mCtrlLODFactor = getChild("ObjectMeshDetail"); - mLODFactorText = getChild("ObjectMeshDetailText"); - mCtrlLODFactor->setCommitCallback(boost::bind(&LLPanelDisplay::updateSliderText, _1,mLODFactorText)); + LLSliderCtrl* ctrl_slider = getChild("ObjectMeshDetail"); + LLTextBox* slider_text = getChild("ObjectMeshDetailText"); + ctrl_slider->setCommitCallback(boost::bind(updateSliderText, ctrl_slider, slider_text)); + updateSliderText(ctrl_slider, slider_text); // Flex object detail slider - mCtrlFlexFactor = getChild("FlexibleMeshDetail"); - mFlexFactorText = getChild("FlexibleMeshDetailText"); - mCtrlFlexFactor->setCommitCallback(boost::bind(&LLPanelDisplay::updateSliderText,_1, mFlexFactorText)); + ctrl_slider = getChild("FlexibleMeshDetail"); + slider_text = getChild("FlexibleMeshDetailText"); + ctrl_slider->setCommitCallback(boost::bind(updateSliderText, ctrl_slider, slider_text)); + updateSliderText(ctrl_slider, slider_text); // Tree detail slider - mCtrlTreeFactor = getChild("TreeMeshDetail"); - mTreeFactorText = getChild("TreeMeshDetailText"); - mCtrlTreeFactor->setCommitCallback(boost::bind(&LLPanelDisplay::updateSliderText, _1, mTreeFactorText)); + ctrl_slider = getChild("TreeMeshDetail"); + slider_text = getChild("TreeMeshDetailText"); + ctrl_slider->setCommitCallback(boost::bind(updateSliderText, ctrl_slider, slider_text)); + updateSliderText(ctrl_slider, slider_text); // Avatar detail slider - mCtrlAvatarFactor = getChild("AvatarMeshDetail"); - mAvatarFactorText = getChild("AvatarMeshDetailText"); - mCtrlAvatarFactor->setCommitCallback(boost::bind(&LLPanelDisplay::updateSliderText, _1, mAvatarFactorText)); + ctrl_slider = getChild("AvatarMeshDetail"); + slider_text = getChild("AvatarMeshDetailText"); + ctrl_slider->setCommitCallback(boost::bind(updateSliderText, ctrl_slider, slider_text)); + updateSliderText(ctrl_slider, slider_text); // Avatar physics detail slider - mCtrlAvatarPhysicsFactor = getChild("AvatarPhysicsDetail"); - mAvatarPhysicsFactorText = getChild("AvatarPhysicsDetailText"); - mCtrlAvatarPhysicsFactor->setCommitCallback(boost::bind(&LLPanelDisplay::updateSliderText, _1, mAvatarPhysicsFactorText)); + ctrl_slider = getChild("AvatarPhysicsDetail"); + slider_text = getChild("AvatarPhysicsDetailText"); + ctrl_slider->setCommitCallback(boost::bind(updateSliderText, ctrl_slider, slider_text)); + updateSliderText(ctrl_slider, slider_text); // Terrain detail slider - mCtrlTerrainFactor = getChild("TerrainMeshDetail"); - mTerrainFactorText = getChild("TerrainMeshDetailText"); - mCtrlTerrainFactor->setCommitCallback(boost::bind(&LLPanelDisplay::updateSliderText, _1, mTerrainFactorText)); + ctrl_slider = getChild("TerrainMeshDetail"); + slider_text = getChild("TerrainMeshDetailText"); + ctrl_slider->setCommitCallback(boost::bind(updateSliderText, ctrl_slider, slider_text)); + updateSliderText(ctrl_slider, slider_text); // Terrain detail slider - mCtrlSkyFactor = getChild("SkyMeshDetail"); - mSkyFactorText = getChild("SkyMeshDetailText"); - mCtrlSkyFactor->setCommitCallback(boost::bind(&LLPanelDisplay::updateSliderText, _1, mSkyFactorText)); - - // Particle detail slider - mCtrlMaxParticle = getChild("MaxParticleCount"); + ctrl_slider = getChild("SkyMeshDetail"); + slider_text = getChild("SkyMeshDetailText"); + ctrl_slider->setCommitCallback(boost::bind(updateSliderText, ctrl_slider, slider_text)); + updateSliderText(ctrl_slider, slider_text); // Glow detail slider - mCtrlPostProcess = getChild("RenderPostProcess"); - mPostProcessText = getChild("PostProcessText"); - mCtrlPostProcess->setCommitCallback(boost::bind(&LLPanelDisplay::updateSliderText, _1, mPostProcessText)); + ctrl_slider = getChild("RenderPostProcess"); + slider_text = getChild("PostProcessText"); + ctrl_slider->setCommitCallback(boost::bind(updateSliderText, ctrl_slider, slider_text)); + updateSliderText(ctrl_slider, slider_text); // Text boxes (for enabling/disabling) - mShaderText = getChild("ShadersText"); - mReflectionText = getChild("ReflectionDetailText"); - mAvatarText = getChild("AvatarRenderingText"); - mTerrainText = getChild("TerrainDetailText"); - mMeshDetailText = getChild("MeshDetailText"); - mShadowDetailText = getChild("ShadowDetailText"); - mTerrainScaleText = getChild("TerrainScaleText"); // Hardware tab mVBO = getChild("vbo"); mVBO->setCommitCallback(boost::bind(&LLPanelDisplay::onVertexShaderEnable)); - mVBOStream = getChild("vbo_stream"); - if(gGLManager.mIsATI) //AMD gpus don't go beyond 8x fsaa. { LLComboBox* fsaa = getChild("fsaa"); @@ -397,16 +379,6 @@ void LLPanelDisplay::refresh() mLocalLights = gSavedSettings.getBOOL("RenderLocalLights"); mTerrainDetail = gSavedSettings.getS32("RenderTerrainDetail"); - // slider text boxes - updateSliderText(mCtrlLODFactor, mLODFactorText); - updateSliderText(mCtrlFlexFactor, mFlexFactorText); - updateSliderText(mCtrlTreeFactor, mTreeFactorText); - updateSliderText(mCtrlAvatarFactor, mAvatarFactorText); - updateSliderText(mCtrlAvatarPhysicsFactor, mAvatarPhysicsFactorText); - updateSliderText(mCtrlTerrainFactor, mTerrainFactorText); - updateSliderText(mCtrlPostProcess, mPostProcessText); - updateSliderText(mCtrlSkyFactor, mSkyFactorText); - // Hardware tab mUseVBO = gSavedSettings.getBOOL("RenderVBOEnable"); mUseFBO = gSavedSettings.getBOOL("RenderUseFBO"); @@ -442,12 +414,7 @@ void LLPanelDisplay::refreshEnabledState() !gGLManager.mHasVertexBufferObject) { mVBO->setEnabled(false); - //Streaming VBOs -Shyotl - mVBOStream->setEnabled(false); - } - else - { - mVBOStream->setEnabled(gSavedSettings.getBOOL("RenderVBOEnable")); + mVBO->setValue(false); } static LLCachedControl wlatmos("WindLightUseAtmosShaders",false); @@ -457,17 +424,7 @@ void LLPanelDisplay::refreshEnabledState() getChildView("note")->setVisible(wlatmos); // disable graphics settings and exit if it's not set to custom - if(!gSavedSettings.getBOOL("RenderCustomSettings")) - { - setHiddenGraphicsState(true); - return; - } - - // otherwise turn them all on and selectively turn off others - else - { - setHiddenGraphicsState(false); - } + if (!gSavedSettings.getBOOL("RenderCustomSettings")) return; // Reflections BOOL reflections = gSavedSettings.getBOOL("VertexShaderEnable") @@ -477,17 +434,9 @@ void LLPanelDisplay::refreshEnabledState() // Bump & Shiny bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump"); - mCtrlBumpShiny->setEnabled(bumpshiny ? TRUE : FALSE); + mCtrlBumpShiny->setEnabled(bumpshiny); - if (gSavedSettings.getBOOL("VertexShaderEnable") == FALSE || - gSavedSettings.getBOOL("RenderAvatarVP") == FALSE) - { - mCtrlAvatarCloth->setEnabled(false); - } - else - { - mCtrlAvatarCloth->setEnabled(true); - } + mCtrlAvatarCloth->setEnabled(gSavedSettings.getBOOL("VertexShaderEnable") && gSavedSettings.getBOOL("RenderAvatarVP")); //I actually recommend RenderUseFBO:FALSE for ati users when not using deferred, so RenderUseFBO shouldn't control visibility of the element. // Instead, gGLManager.mHasFramebufferObject seems better as it is determined by hardware and not current user settings. -Shyotl @@ -505,9 +454,6 @@ void LLPanelDisplay::refreshEnabledState() mCtrlAmbientOcc->setEnabled(can_defer && render_deferred); mCtrlDeferredDoF->setEnabled(can_defer && render_deferred); - // Disable max non-impostors slider if avatar impostors are off - mCtrlNonImpostors->setEnabled(gSavedSettings.getBOOL("RenderUseImpostors")); - // Vertex Shaders // mCtrlShaderEnable->setEnabled(LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable")); // [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) | Modified: RLVa-0.2.0a @@ -536,39 +482,43 @@ void LLPanelDisplay::refreshEnabledState() mCtrlWindLight->setEnabled(fCtrlWindLightEnable && (!gRlvHandler.hasBehaviour(RLV_BHVR_SETENV) || !mWindLight)); // [/RLVa:KB] - // turn off sky detail if atmospherics isn't on - mCtrlSkyFactor->setEnabled(wlatmos); - mSkyFactorText->setEnabled(wlatmos); - // Avatar Mode and FBO if (render_deferred && wlatmos && shaders) { - childSetEnabled("fbo", false); - childSetValue("fbo", true); + getChildView("fbo")->setEnabled(false); + getChildView("fbo")->setValue(true); mCtrlAvatarVP->setEnabled(false); gSavedSettings.setBOOL("RenderAvatarVP", true); } - else if (!shaders) - { - childSetEnabled("fbo", gGLManager.mHasFramebufferObject); - mCtrlAvatarVP->setEnabled(false); - gSavedSettings.setBOOL("RenderAvatarVP", false); - } else { - childSetEnabled("fbo", gGLManager.mHasFramebufferObject); - mCtrlAvatarVP->setEnabled(true); + getChildView("fbo")->setEnabled(gGLManager.mHasFramebufferObject); + mCtrlAvatarVP->setEnabled(shaders); + if (!shaders) gSavedSettings.setBOOL("RenderAvatarVP", false); } - // now turn off any features that are unavailable disableUnavailableSettings(); } void LLPanelDisplay::disableUnavailableSettings() { + // disabled terrain scale + if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderTerrainScale")) + { + mCtrlTerrainScale->setEnabled(false); + mCtrlTerrainScale->setValue(false); + } + // disabled impostors + if (!LLFeatureManager::getInstance()->isFeatureAvailable("RenderUseImpostors")) + { + mCtrlAvatarImpostors->setEnabled(false); + mCtrlAvatarImpostors->setValue(false); + } + // if vertex shaders off, disable all shader related products - if(!LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable")) + // Singu Note: Returns early this, place all unrelated checks above now. + if (!LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable")) { mCtrlShaderEnable->setEnabled(FALSE); mCtrlShaderEnable->setValue(FALSE); @@ -593,6 +543,7 @@ void LLPanelDisplay::disableUnavailableSettings() mCtrlDeferredDoF->setValue(FALSE); mCtrlShadowDetail->setEnabled(FALSE); mCtrlShadowDetail->setValue(FALSE); + return; } // disabled windlight @@ -609,13 +560,6 @@ void LLPanelDisplay::disableUnavailableSettings() mCtrlReflectionDetail->setValue(FALSE); } - // disabled terrain scale - if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderTerrainScale")) - { - mCtrlTerrainScale->setEnabled(false); - mCtrlTerrainScale->setValue(false); - } - // disabled av if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarVP")) { @@ -626,18 +570,11 @@ void LLPanelDisplay::disableUnavailableSettings() mCtrlAvatarCloth->setValue(FALSE); } // disabled cloth - if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarCloth")) + else if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderAvatarCloth")) { mCtrlAvatarCloth->setEnabled(FALSE); mCtrlAvatarCloth->setValue(FALSE); } - // disabled impostors - if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderUseImpostors")) - { - mCtrlAvatarImpostors->setEnabled(FALSE); - mCtrlAvatarImpostors->setValue(FALSE); - mCtrlNonImpostors->setEnabled(FALSE); - } // disabled deferred if(!LLFeatureManager::getInstance()->isFeatureAvailable("RenderDeferred")) { @@ -653,119 +590,6 @@ void LLPanelDisplay::disableUnavailableSettings() } -void LLPanelDisplay::setHiddenGraphicsState(bool isHidden) -{ - // quick check - //llassert(mGraphicsBorder != NULL); - - llassert(mCtrlDrawDistance != NULL); - llassert(mCtrlLODFactor != NULL); - llassert(mCtrlFlexFactor != NULL); - llassert(mCtrlTreeFactor != NULL); - llassert(mCtrlAvatarFactor != NULL); - llassert(mCtrlTerrainFactor != NULL); - llassert(mCtrlSkyFactor != NULL); - llassert(mCtrlMaxParticle != NULL); - llassert(mCtrlPostProcess != NULL); - - llassert(mLODFactorText != NULL); - llassert(mFlexFactorText != NULL); - llassert(mTreeFactorText != NULL); - llassert(mAvatarFactorText != NULL); - llassert(mTerrainFactorText != NULL); - llassert(mSkyFactorText != NULL); - llassert(mPostProcessText != NULL); - - llassert(mCtrlTransparentWater != NULL); - llassert(mCtrlBumpShiny != NULL); - llassert(mCtrlWindLight != NULL); - llassert(mCtrlAvatarVP != NULL); - llassert(mCtrlShaderEnable != NULL); - llassert(mCtrlAvatarImpostors != NULL); - llassert(mCtrlNonImpostors != NULL); - llassert(mCtrlAvatarCloth != NULL); - llassert(mCtrlLightingDetail2 != NULL); - llassert(mCtrlAmbientOcc != NULL); - - llassert(mRadioTerrainDetail != NULL); - llassert(mCtrlReflectionDetail != NULL); - llassert(mCtrlTerrainScale != NULL); - - llassert(mMeshDetailText != NULL); - llassert(mShaderText != NULL); - llassert(mReflectionText != NULL); - llassert(mTerrainScaleText != NULL); - llassert(mAvatarText != NULL); - llassert(mTerrainText != NULL); - llassert(mDrawDistanceMeterText1 != NULL); - llassert(mDrawDistanceMeterText2 != NULL); - - // enable/disable the states - //mGraphicsBorder->setVisible(!isHidden); - /* - LLColor4 light(.45098f, .51765f, .6078f, 1.0f); - LLColor4 dark(.10196f, .10196f, .10196f, 1.0f); - b ? mGraphicsBorder->setColors(dark, light) : mGraphicsBorder->setColors(dark, dark); - */ - - mCtrlDrawDistance->setVisible(!isHidden); - mCtrlLODFactor->setVisible(!isHidden); - mCtrlFlexFactor->setVisible(!isHidden); - mCtrlTreeFactor->setVisible(!isHidden); - mCtrlAvatarFactor->setVisible(!isHidden); - mCtrlAvatarPhysicsFactor->setVisible(!isHidden); - mCtrlTerrainFactor->setVisible(!isHidden); - mCtrlSkyFactor->setVisible(!isHidden); - mCtrlMaxParticle->setVisible(!isHidden); - mCtrlPostProcess->setVisible(!isHidden); - - mLODFactorText->setVisible(!isHidden); - mFlexFactorText->setVisible(!isHidden); - mTreeFactorText->setVisible(!isHidden); - mAvatarFactorText->setVisible(!isHidden); - mAvatarPhysicsFactorText->setVisible(!isHidden); - mTerrainFactorText->setVisible(!isHidden); - mSkyFactorText->setVisible(!isHidden); - mPostProcessText->setVisible(!isHidden); - - mCtrlTransparentWater->setVisible(!isHidden); - mCtrlBumpShiny->setVisible(!isHidden); - mCtrlWindLight->setVisible(!isHidden); - mCtrlAvatarVP->setVisible(!isHidden); - mCtrlShaderEnable->setVisible(!isHidden); - mCtrlAvatarImpostors->setVisible(!isHidden); - mCtrlNonImpostors->setVisible(!isHidden); - mCtrlAvatarCloth->setVisible(!isHidden); - mCtrlLightingDetail2->setVisible(!isHidden); - mCtrlAmbientOcc->setVisible(!isHidden); - - mRadioTerrainDetail->setVisible(!isHidden); - mCtrlReflectionDetail->setVisible(!isHidden); - mCtrlTerrainScale->setVisible(!isHidden); - - mCtrlDeferred->setVisible(!isHidden); - mCtrlDeferredDoF->setVisible(!isHidden); - mCtrlShadowDetail->setVisible(!isHidden); - - // text boxes - mShaderText->setVisible(!isHidden); - mReflectionText->setVisible(!isHidden); - mAvatarText->setVisible(!isHidden); - mTerrainText->setVisible(!isHidden); - mDrawDistanceMeterText1->setVisible(!isHidden); - mDrawDistanceMeterText2->setVisible(!isHidden); - mShadowDetailText->setVisible(!isHidden); - mTerrainScaleText->setVisible(!isHidden); - - // hide one meter text if we're making things visible - if(!isHidden) - { - updateMeterText(); - } - - mMeshDetailText->setVisible(!isHidden); -} - void LLPanelDisplay::cancel() { gSavedSettings.setBOOL("FullScreenAutoDetectAspectRatio", mFSAutoDetectAspect); @@ -860,19 +684,10 @@ void LLPanelDisplay::apply() } } -void LLPanelDisplay::onChangeQuality(LLUICtrl* caller) +void LLPanelDisplay::onChangeQuality(LLUICtrl* ctrl) { - LLSlider* sldr = dynamic_cast(caller); - - if(sldr == NULL) - { - return; - } - - U32 set = (U32)sldr->getValueF32(); - LLFeatureManager::getInstance()->setGraphicsLevel(set, true); - LLFloaterPreference::refreshEnabledGraphics(); + LLFeatureManager::getInstance()->setGraphicsLevel(ctrl->getValue(), true); refresh(); } @@ -979,16 +794,6 @@ void LLPanelDisplay::onCommitAutoDetectAspect(const LLSD& value) } } -void LLPanelDisplay::onKeystrokeAspectRatio() -{ - mCtrlAutoDetectAspect->set(FALSE); -} - -void LLPanelDisplay::onSelectAspectRatio() -{ - mCtrlAutoDetectAspect->set(FALSE); -} - //static void LLPanelDisplay::fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator) { @@ -1010,51 +815,38 @@ void LLPanelDisplay::onVertexShaderEnable() LLFloaterPreference::refreshEnabledGraphics(); } -//static void LLPanelDisplay::setHardwareDefaults() { LLFeatureManager::getInstance()->applyRecommendedSettings(); - LLControlVariable* controlp = gSavedSettings.getControl("RenderAvatarMaxVisible"); - if (controlp) + if (LLControlVariable* controlp = gSavedSettings.getControl("RenderAvatarMaxVisible")) { controlp->resetToDefault(true); } LLFloaterPreference::refreshEnabledGraphics(); } -//static -void LLPanelDisplay::updateSliderText(LLUICtrl* ctrl, LLTextBox* text_box) +void updateSliderText(LLSliderCtrl* slider, LLTextBox* text_box) { - // get our UI widgets - LLSliderCtrl* slider = dynamic_cast(ctrl); - if(text_box == NULL || slider == NULL) - { - return; - } - - //Hack to display 'Off' for avatar physics slider. - if(slider->getName() == "AvatarPhysicsDetail" && !slider->getValueF32()) - { - text_box->setText(std::string("Off")); - return; - } - // get range and points when text should change - F32 range = slider->getMaxValue() - slider->getMinValue(); - llassert(range > 0); - F32 midPoint = slider->getMinValue() + range / 3.0f; - F32 highPoint = slider->getMinValue() + (2.0f * range / 3.0f); + const F32 value = slider->getValue().asFloat(); + const F32 min_val = slider->getMinValue(); + const F32 max_val = slider->getMaxValue(); + const F32 range = (max_val - min_val)/3.f; // choose the right text - if(slider->getValueF32() < midPoint) + if (value < min_val + range) { - text_box->setText(std::string("Low")); + //Hack to display 'Off' for avatar physics slider. + if (!value && slider->getName() == "AvatarPhysicsDetail") + text_box->setText(std::string("Off")); + else + text_box->setText(std::string("Low")); } - else if (slider->getValueF32() < highPoint) + else if (value < min_val + 2.0f * range) { text_box->setText(std::string("Mid")); } - else if(slider->getValueF32() < slider->getMaxValue()) + else if (value < max_val) { text_box->setText(std::string("High")); } @@ -1064,14 +856,3 @@ void LLPanelDisplay::updateSliderText(LLUICtrl* ctrl, LLTextBox* text_box) } } -void LLPanelDisplay::updateMeterText() -{ - // toggle the two text boxes based on whether we have 2 or 3 digits - F32 val = mCtrlDrawDistance->getValueF32(); - bool two_digits = val < 100; - mDrawDistanceMeterText1->setVisible(two_digits); - mDrawDistanceMeterText2->setVisible(!two_digits); -} - - - diff --git a/indra/newview/llpaneldisplay.h b/indra/newview/llpaneldisplay.h index e0ff04ee5..6d291f605 100644 --- a/indra/newview/llpaneldisplay.h +++ b/indra/newview/llpaneldisplay.h @@ -70,14 +70,11 @@ public: void refresh(); // Refresh enable/disable void refreshEnabledState(); void disableUnavailableSettings(); - void setHiddenGraphicsState(bool isHidden); void apply(); // Apply the changed values. void applyResolution(); void cancel(); protected: - void initWindowSizeControls(); - bool extractWindowSizeFromString(const std::string& instr, U32 &width, U32 &height); // aspect ratio sliders and boxes LLComboBox *mCtrlFullScreen; // Fullscreen resolution @@ -90,22 +87,6 @@ protected: LLSliderCtrl *mCtrlSliderQuality; LLCheckBoxCtrl *mCtrlCustomSettings; - // performance sliders and boxes - //LLViewBorder *mGraphicsBorder; - - LLSliderCtrl *mCtrlDrawDistance; // the draw distance slider - LLSliderCtrl *mCtrlLODFactor; // LOD for volume objects - LLSliderCtrl *mCtrlFlexFactor; // Timeslice for flexible objects - LLSliderCtrl *mCtrlTreeFactor; // Control tree cutoff distance - LLSliderCtrl *mCtrlAvatarFactor; // LOD for avatars - LLSliderCtrl *mCtrlAvatarPhysicsFactor; // Physics LOD for avatars - LLSliderCtrl *mCtrlTerrainFactor; // LOD for terrain - LLSliderCtrl *mCtrlSkyFactor; // LOD for terrain - LLSliderCtrl *mCtrlMaxParticle; // Max Particle - LLSliderCtrl *mCtrlPostProcess; // Max Particle - LLSliderCtrl *mCtrlNonImpostors; // Max non-impostors - - LLCheckBoxCtrl *mCtrlTransparentWater; LLCheckBoxCtrl *mCtrlBumpShiny; LLCheckBoxCtrl *mCtrlWindLight; LLCheckBoxCtrl *mCtrlAvatarVP; @@ -117,34 +98,13 @@ protected: LLComboBox *mCtrlTerrainScale; LLCheckBoxCtrl *mCtrlAvatarImpostors; LLCheckBoxCtrl *mCtrlAvatarCloth; - LLCheckBoxCtrl *mCtrlLightingDetail2; LLCheckBoxCtrl *mCtrlAmbientOcc; LLRadioGroup *mRadioTerrainDetail; LLTextBox *mAspectRatioLabel1; LLTextBox *mDisplayResLabel; - LLTextBox *mShaderText; - LLTextBox *mReflectionText; - LLTextBox *mAvatarText; - LLTextBox *mTerrainText; - LLTextBox *mDrawDistanceMeterText1; - LLTextBox *mDrawDistanceMeterText2; - - LLTextBox *mMeshDetailText; - LLTextBox *mLODFactorText; - LLTextBox *mFlexFactorText; - LLTextBox *mTreeFactorText; - LLTextBox *mAvatarFactorText; - LLTextBox *mAvatarPhysicsFactorText; - LLTextBox *mTerrainFactorText; - LLTextBox *mSkyFactorText; - LLTextBox *mPostProcessText; - LLTextBox *mShadowDetailText; - LLTextBox *mTerrainScaleText; - LLCheckBoxCtrl *mVBO; - LLCheckBoxCtrl *mVBOStream; BOOL mFSAutoDetectAspect; F32 mAspectRatio; @@ -200,14 +160,11 @@ protected: static void onChangeCustom(); void onCommitAutoDetectAspect(const LLSD& value); - void onKeystrokeAspectRatio(); - void onSelectAspectRatio(); void onCommitWindowedMode(); - static void updateSliderText(LLUICtrl* ctrl, LLTextBox* text_box); void updateMeterText(); /// callback for defaults - static void setHardwareDefaults(); + void setHardwareDefaults(); // callback for when client turns on shaders static void onVertexShaderEnable(); diff --git a/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml index be8821019..f99dc7429 100644 --- a/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml @@ -1,103 +1,102 @@ - -