diff --git a/indra/newview/llfloaterperformance.cpp b/indra/newview/llfloaterperformance.cpp index 5eb58b9482e96c62b48d18eed0ba9e48bef08160..e35fa5556464dc4bf329df0a7ee28f2b2cb17d44 100644 --- a/indra/newview/llfloaterperformance.cpp +++ b/indra/newview/llfloaterperformance.cpp @@ -39,6 +39,7 @@ #include "llnamelistctrl.h" #include "llnotificationsutil.h" #include "llperfstats.h" +#include "llpresetsmanager.h" #include "llradiogroup.h" #include "llsliderctrl.h" #include "lltextbox.h" @@ -158,6 +159,8 @@ BOOL LLFloaterPerformance::postBuild() mStartAutotuneBtn->setCommitCallback(boost::bind(&LLFloaterPerformance::startAutotune, this)); mStopAutotuneBtn->setCommitCallback(boost::bind(&LLFloaterPerformance::stopAutotune, this)); + gSavedPerAccountSettings.declareBOOL("HadEnabledAutoFPS", FALSE, "User had enabled AutoFPS at least once", LLControlVariable::PERSIST_ALWAYS); + return TRUE; } @@ -188,7 +191,10 @@ void LLFloaterPerformance::showAutoadjustmentsPanel() void LLFloaterPerformance::draw() { - if (mUpdateTimer->hasExpired()) + enableAutotuneWarning(); + + if (mUpdateTimer->hasExpired() && + !LLFloaterReg::instanceVisible("save_pref_preset", PRESETS_GRAPHIC)) // give user a chance to save the graphics settings before updating them { setFPSText(); if (mHUDsPanel->getVisible()) @@ -672,4 +678,22 @@ void LLFloaterPerformance::updateAutotuneCtrls(bool autotune_enabled) getChild<LLTextBox>("wip_desc")->setVisible(autotune_enabled && !auto_tune_locked); getChild<LLTextBox>("display_desc")->setVisible(LLPerfStats::tunables.vsyncEnabled); } + +void LLFloaterPerformance::enableAutotuneWarning() +{ + if (!gSavedPerAccountSettings.getBOOL("HadEnabledAutoFPS") && LLPerfStats::tunables.userAutoTuneEnabled) + { + gSavedPerAccountSettings.setBOOL("HadEnabledAutoFPS", TRUE); + + LLNotificationsUtil::add("EnableAutoFPSWarning", LLSD(), LLSD(), + [](const LLSD& notif, const LLSD& resp) + { + S32 opt = LLNotificationsUtil::getSelectedOption(notif, resp); + if (opt == 0) + { // offer user to save current graphics settings as a preset + LLFloaterReg::showInstance("save_pref_preset", PRESETS_GRAPHIC); + } + }); + } +} // EOF diff --git a/indra/newview/llfloaterperformance.h b/indra/newview/llfloaterperformance.h index 648e5902b65ed8a25f8a402c3291dea9ce1225bc..00f904f6d62419654078c2859786c6ded9d70b3c 100644 --- a/indra/newview/llfloaterperformance.h +++ b/indra/newview/llfloaterperformance.h @@ -71,6 +71,7 @@ class LLFloaterPerformance : public LLFloater void startAutotune(); void stopAutotune(); void updateAutotuneCtrls(bool autotune_enabled); + void enableAutotuneWarning(); void updateMaxRenderTime(); diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 067e5c23c9d9ce72cced19ef24b67306e39e5d34..f9211600ea041a1392ecb19f6f0c820fb147b2f8 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -11965,4 +11965,18 @@ If you want others to see this object, remove it and re-attach it to an avatar a yestext="OK"/> </notification> + <notification + icon="alertmodal.tga" + name="EnableAutoFPSWarning" + type="alertmodal"> +You are about to enable AutoFPS. All unsaved graphics settings will be lost. + +Would you like to save them first? + <tag>confirm</tag> + <usetemplate + name="okcancelbuttons" + notext="No" + yestext="Yes"/> + </notification> + </notifications>