diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index a6ad55c3c6..3616d5a56c 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -2720,21 +2720,10 @@ void LLFloaterPreference::changed() //------------------------------Updater--------------------------------------- -// FIRE-6795: Remove repetitive warning at every login -// Add warning on high bandwidth setting -//static void updateBandwidthWarning() -//{ -// S32 newBandwidth=(S32) gSavedSettings.getF32("ThrottleBandwidthKBPS"); -// gSavedSettings.setBOOL("BandwidthSettingTooHigh",newBandwidth>1500); -//} -// -// FIRE-6795 - // FIRE-6340, FIRE-6567 - Setting Bandwidth issues //static bool handleBandwidthChanged(const LLSD& newvalue) //{ // gViewerThrottle.setMaxBandwidth((F32) newvalue.asReal()); -// updateBandwidthWarning(); // Add warning on high bandwidth setting // return true; //} @@ -2780,8 +2769,8 @@ void LLFloaterPreference::changed() static LLPanelInjector t_places("panel_preference"); LLPanelPreference::LLPanelPreference() -// FIRE-6340, FIRE-6567 - Setting Bandwidth issues -//: LLPanel(), +: LLPanel() + // FIRE-6340, FIRE-6567 - Setting Bandwidth issues //mBandWidthUpdater(NULL) { // Handled centrally now @@ -2908,20 +2897,13 @@ BOOL LLPanelPreference::postBuild() // [/WoLf] //////////////////////PanelSetup /////////////////// - // Add warning on high bandwidth settings + // FIRE-6340, FIRE-6567 - Setting Bandwidth issues //if (hasChild("max_bandwidth"), TRUE) - // Look for the layout widget on top level of this panel - if (hasChild("max_bandwidth_layout")) - // - { - // FIRE-6340, FIRE-6567 - Setting Bandwidth issues - //mBandWidthUpdater = new LLPanelPreference::Updater(boost::bind(&handleBandwidthChanged, _1), BANDWIDTH_UPDATER_TIMEOUT); - //gSavedSettings.getControl("ThrottleBandwidthKBPS")->getSignal()->connect(boost::bind(&LLPanelPreference::Updater::update, mBandWidthUpdater, _2)); - // FIRE-6795: Remove warning on every login - //updateBandwidthWarning(); // Add warning on high bandwidth setting - // FIRE-6795 - // FIRE-6340, FIRE-6567 - Setting Bandwidth issues - } + //{ + // mBandWidthUpdater = new LLPanelPreference::Updater(boost::bind(&handleBandwidthChanged, _1), BANDWIDTH_UPDATER_TIMEOUT); + // gSavedSettings.getControl("ThrottleBandwidthKBPS")->getSignal()->connect(boost::bind(&LLPanelPreference::Updater::update, mBandWidthUpdater, _2)); + //} + // FIRE-6340, FIRE-6567 - Setting Bandwidth issues // Fix for visually broken browser choice radiobuttons //if (hasChild("use_external_browser", TRUE)) diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 02a4097e58..913044f08e 100755 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -292,7 +292,8 @@ public: // cancel() can restore them. virtual void saveSettings(); - class Updater; + // Handled in llviewercontrol.cpp + //class Updater; protected: typedef std::map control_values_map_t; diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 0ca68d328e..39ad34f8dc 100755 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -118,7 +118,45 @@ std::string gLastRunVersion; extern BOOL gResizeScreenTexture; extern BOOL gDebugGL; -LLTimer throttle_timer;// FIRE-6340, FIRE-6567 - Setting Bandwidth issues +// FIRE-6809: Quickly moving the bandwidth slider has no effect +class BandwidthUpdater : public LLEventTimer +{ +public: + BandwidthUpdater() + :LLEventTimer(0.5f) + { + mEventTimer.stop(); + } + + virtual ~BandwidthUpdater(){} + + void update(const LLSD& new_value) + { + mNewValue = new_value.asReal(); + mEventTimer.start(); + } + +protected: + BOOL tick() + { + gViewerThrottle.setMaxBandwidth(mNewValue); + mEventTimer.stop(); + + static LLCachedControl alreadyComplainedAboutBW(gWarningSettings, "FSBandwidthTooHigh"); + if (!alreadyComplainedAboutBW && mNewValue > 1500.f) + { + LLNotificationsUtil::add("FSBWTooHigh"); + gWarningSettings.setBOOL("FSBandwidthTooHigh", TRUE); + } + + return FALSE; + } + +private: + F32 mNewValue; +}; +BandwidthUpdater sBandwidthUpdater; +// //////////////////////////////////////////////////////////////////////////// // Listeners @@ -136,26 +174,7 @@ static bool handleRenderFarClipChanged(const LLSD& newvalue) LLWorld::getInstance()->setLandFarClip(draw_distance); return true; } -// FIRE-6340, FIRE-6567 - Setting Bandwidth issues -static bool handleBandWidthChanged(const LLSD& newvalue) -{ - // FIRE-6795: Only complain about bandwidth setting once - static LLCachedControl alreadyComplainedAboutBW(gWarningSettings,"FSBandwidthTooHigh"); - F32 throttletimer = throttle_timer.getElapsedTimeF32(); - if (throttletimer > 0.25f) - { - F32 bandwidth = (F32) newvalue.asReal(); - gViewerThrottle.setMaxBandwidth((F32) bandwidth); - throttle_timer.reset(); - if (!alreadyComplainedAboutBW && (bandwidth > 1500.0)) - { - LLNotificationsUtil::add("FSBWTooHigh"); - gWarningSettings.setBOOL("FSBandwidthTooHigh",TRUE); - } - // FIRE-6795 - } - return true; -} + // FIRE-6340, FIRE-6567 - Setting Bandwidth issues static bool handleTerrainDetailChanged(const LLSD& newvalue) { @@ -874,8 +893,6 @@ void settings_setup_listeners() { gSavedSettings.getControl("FirstPersonAvatarVisible")->getSignal()->connect(boost::bind(&handleRenderAvatarMouselookChanged, _2)); gSavedSettings.getControl("RenderFarClip")->getSignal()->connect(boost::bind(&handleRenderFarClipChanged, _2)); - // FIRE-6340, FIRE-6567 - Setting Bandwidth issues - gSavedSettings.getControl("ThrottleBandwidthKBPS")->getSignal()->connect(boost::bind(&handleBandWidthChanged, _2)); gSavedSettings.getControl("RenderTerrainDetail")->getSignal()->connect(boost::bind(&handleTerrainDetailChanged, _2)); gSavedSettings.getControl("OctreeStaticObjectSizeFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2)); gSavedSettings.getControl("OctreeDistanceFactor")->getSignal()->connect(boost::bind(&handleRepartition, _2)); @@ -1080,6 +1097,9 @@ void settings_setup_listeners() // FIRE-17393: Control HUD text fading by options gSavedSettings.getControl("FSHudTextFadeDistance")->getSignal()->connect(boost::bind(&LLHUDText::onFadeSettingsChanged)); gSavedSettings.getControl("FSHudTextFadeRange")->getSignal()->connect(boost::bind(&LLHUDText::onFadeSettingsChanged)); + + // FIRE-6340, FIRE-6567, FIRE-6809 - Setting Bandwidth issues + gSavedSettings.getControl("ThrottleBandwidthKBPS")->getSignal()->connect(boost::bind(&BandwidthUpdater::update, sBandwidthUpdater, _2)); } #if TEST_CACHED_CONTROL