diff options
| author | andreykproductengine <akleshchev@productengine.com> | 2014-11-25 16:29:40 +0200 | 
|---|---|---|
| committer | andreykproductengine <akleshchev@productengine.com> | 2014-11-25 16:29:40 +0200 | 
| commit | 35a8938892a16c17da8ef7707227f4494bb41eb5 (patch) | |
| tree | 12aebc048b7202351b25c9fbe7e3b8a6bb7bea27 /indra | |
| parent | 120e052e326097e56ae1d5eea7eb8d2675c1cb44 (diff) | |
MAINT-4690 FIXED forced send_agent_update(TRUE) in idle() results in large amounts of useless UDP traffic
Diffstat (limited to 'indra')
| -rwxr-xr-x | indra/newview/llappviewer.cpp | 36 | ||||
| -rwxr-xr-x | indra/newview/llappviewer.h | 3 | 
2 files changed, 23 insertions, 16 deletions
| diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index f6b6c71cfc..67007bc4cd 100755 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -685,6 +685,8 @@ LLAppViewer::LLAppViewer()  	mQuitRequested(false),  	mLogoutRequestSent(false),  	mYieldTime(-1), +	mLastAgentControlFlags(0), +	mLastAgentForceUpdate(0),  	mMainloopTimeout(NULL),  	mAgentRegionLastAlive(false),  	mRandomizeFramerate(LLCachedControl<bool>(gSavedSettings,"Randomize Framerate", FALSE)), @@ -4811,22 +4813,24 @@ void LLAppViewer::idle()  			gAgentPilot.updateTarget();  			gAgent.autoPilot(&yaw);  		} -     -	    static LLFrameTimer agent_update_timer; -	    static U32 				last_control_flags; -     -	    //	When appropriate, update agent location to the simulator. -	    F32 agent_update_time = agent_update_timer.getElapsedTimeF32(); -	    BOOL flags_changed = gAgent.controlFlagsDirty() || (last_control_flags != gAgent.getControlFlags()); -		     -	    if (flags_changed || (agent_update_time > (1.0f / (F32) AGENT_UPDATES_PER_SECOND))) -	    { -		    LL_RECORD_BLOCK_TIME(FTM_AGENT_UPDATE); -		    // Send avatar and camera info -		    last_control_flags = gAgent.getControlFlags(); -		    send_agent_update(TRUE); -		    agent_update_timer.reset(); -	    } + +		static LLFrameTimer agent_update_timer; + +		// When appropriate, update agent location to the simulator. +		F32 agent_update_time = agent_update_timer.getElapsedTimeF32(); +		F32 agent_force_update_time = mLastAgentForceUpdate + agent_update_time; +		BOOL force_update = gAgent.controlFlagsDirty() +							|| (mLastAgentControlFlags != gAgent.getControlFlags()) +							|| (agent_force_update_time > (1.0f / (F32) AGENT_FORCE_UPDATES_PER_SECOND)); +		if (force_update || (agent_update_time > (1.0f / (F32) AGENT_UPDATES_PER_SECOND))) +		{ +			LL_RECORD_BLOCK_TIME(FTM_AGENT_UPDATE); +			// Send avatar and camera info +			mLastAgentControlFlags = gAgent.getControlFlags(); +			mLastAgentForceUpdate = force_update ? 0 : agent_force_update_time; +			send_agent_update(force_update); +			agent_update_timer.reset(); +		}  	}  	////////////////////////////////////// diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index e0f3f326c7..e8a1ca036b 100755 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -275,6 +275,8 @@ private:      bool mQuitRequested;				// User wants to quit, may have modified documents open.      bool mLogoutRequestSent;			// Disconnect message sent to simulator, no longer safe to send messages to the sim.      S32 mYieldTime; +	U32 mLastAgentControlFlags; +	F32 mLastAgentForceUpdate;  	struct SettingsFiles* mSettingsLocationList;  	LLWatchdogTimeout* mMainloopTimeout; @@ -314,6 +316,7 @@ public:  // consts from viewer.h  const S32 AGENT_UPDATES_PER_SECOND  = 10; +const S32 AGENT_FORCE_UPDATES_PER_SECOND  = 1;  // Globals with external linkage. From viewer.h  // *NOTE:Mani - These will be removed as the Viewer App Cleanup project continues. | 
