diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llfloaterpreference.cpp | 65 | ||||
| -rw-r--r-- | indra/newview/llfloaterpreference.h | 5 | ||||
| -rw-r--r-- | indra/newview/llviewercontrol.cpp | 7 | 
3 files changed, 69 insertions, 8 deletions
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index b4b12024aa..c7fce83b03 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -43,6 +43,7 @@  #include "llcombobox.h"  #include "llcommandhandler.h"  #include "lldirpicker.h" +#include "lleventtimer.h"  #include "llfeaturemanager.h"  #include "llfocusmgr.h"  //#include "llfirstuse.h" @@ -73,6 +74,7 @@  #include "llviewerwindow.h"  #include "llviewermessage.h"  #include "llviewershadermgr.h" +#include "llviewerthrottle.h"  #include "llvotree.h"  #include "llvosky.h" @@ -109,6 +111,7 @@  const F32 MAX_USER_FAR_CLIP = 512.f;  const F32 MIN_USER_FAR_CLIP = 64.f; +const F32 BANDWIDTH_UPDATER_TIMEOUT = 0.5f;  //control value for middle mouse as talk2push button  const static std::string MIDDLE_MOUSE_CV = "MiddleMouse"; @@ -1526,10 +1529,56 @@ void LLFloaterPreference::setCacheLocation(const LLStringExplicit& location)  	cache_location_editor->setToolTip(location);  } +//------------------------------Updater--------------------------------------- + +static bool handleBandwidthChanged(const LLSD& newvalue) +{ +	gViewerThrottle.setMaxBandwidth((F32) newvalue.asReal()); +	return true; +} + +class LLPanelPreference::Updater : public LLEventTimer +{ + +public: + +	typedef boost::function<bool(const LLSD&)> callback_t; + +	Updater(callback_t cb, F32 period) +	:LLEventTimer(period), +	 mCallback(cb) +	{ +		mEventTimer.stop(); +	} + +	virtual ~Updater(){} + +	void update(const LLSD& new_value) +	{ +		mNewValue = new_value; +		mEventTimer.start(); +	} + +protected: + +	BOOL tick() +	{ +		mCallback(mNewValue); +		mEventTimer.stop(); + +		return FALSE; +	} + +private: + +	LLSD mNewValue; +	callback_t mCallback; +};  //----------------------------------------------------------------------------  static LLRegisterPanelClassWrapper<LLPanelPreference> t_places("panel_preference");  LLPanelPreference::LLPanelPreference() -: LLPanel() +: LLPanel(), +  mBandWidthUpdater(NULL)  {  	mCommitCallbackRegistrar.add("Pref.setControlFalse",	boost::bind(&LLPanelPreference::setControlFalse,this, _2));  	mCommitCallbackRegistrar.add("Pref.updateMediaAutoPlayCheckbox",	boost::bind(&LLPanelPreference::updateMediaAutoPlayCheckbox, this, _1)); @@ -1599,10 +1648,24 @@ BOOL LLPanelPreference::postBuild()  		}  	} +	//////////////////////PanelSetup /////////////////// +	if (hasChild("max_bandwidth")) +	{ +		mBandWidthUpdater = new LLPanelPreference::Updater(boost::bind(&handleBandwidthChanged, _1), BANDWIDTH_UPDATER_TIMEOUT); +		gSavedSettings.getControl("ThrottleBandwidthKBPS")->getSignal()->connect(boost::bind(&LLPanelPreference::Updater::update, mBandWidthUpdater, _2)); +	} +  	apply();  	return true;  } +LLPanelPreference::~LLPanelPreference() +{ +	if (mBandWidthUpdater) +	{ +		delete mBandWidthUpdater; +	} +}  void LLPanelPreference::apply()  {  	// no-op diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 4d8a2489be..5fe509fb37 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -181,6 +181,8 @@ public:  	LLPanelPreference();  	/*virtual*/ BOOL postBuild(); +	virtual ~LLPanelPreference(); +  	virtual void apply();  	virtual void cancel();  	void setControlFalse(const LLSD& user_data); @@ -194,6 +196,7 @@ public:  	// cancel() can restore them.  	virtual void saveSettings(); +	class Updater;  private:  	//for "Only friends and groups can call or IM me"  	static void showFriendsOnlyWarning(LLUICtrl*, const LLSD&); @@ -205,6 +208,8 @@ private:  	typedef std::map<std::string, LLColor4> string_color_map_t;  	string_color_map_t mSavedColors; + +	Updater* mBandWidthUpdater;  };  class LLPanelPreferenceGraphics : public LLPanelPreference diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index ffe607f912..06c1520314 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -239,12 +239,6 @@ static bool handleVideoMemoryChanged(const LLSD& newvalue)  	return true;  } -static bool handleBandwidthChanged(const LLSD& newvalue) -{ -	gViewerThrottle.setMaxBandwidth((F32) newvalue.asReal()); -	return true; -} -  static bool handleChatFontSizeChanged(const LLSD& newvalue)  {  	if(gConsole) @@ -562,7 +556,6 @@ void settings_setup_listeners()  	gSavedSettings.getControl("RenderTerrainLODFactor")->getSignal()->connect(boost::bind(&handleTerrainLODChanged, _2));  	gSavedSettings.getControl("RenderTreeLODFactor")->getSignal()->connect(boost::bind(&handleTreeLODChanged, _2));  	gSavedSettings.getControl("RenderFlexTimeFactor")->getSignal()->connect(boost::bind(&handleFlexLODChanged, _2)); -	gSavedSettings.getControl("ThrottleBandwidthKBPS")->getSignal()->connect(boost::bind(&handleBandwidthChanged, _2));  	gSavedSettings.getControl("RenderGamma")->getSignal()->connect(boost::bind(&handleGammaChanged, _2));  	gSavedSettings.getControl("RenderFogRatio")->getSignal()->connect(boost::bind(&handleFogRatioChanged, _2));  	gSavedSettings.getControl("RenderMaxPartCount")->getSignal()->connect(boost::bind(&handleMaxPartCountChanged, _2));  | 
