diff options
| author | Andrey Kleshchev <andreykproductengine@lindenlab.com> | 2024-01-16 02:58:07 +0200 | 
|---|---|---|
| committer | Andrey Kleshchev <117672381+akleshchev@users.noreply.github.com> | 2024-01-16 19:56:25 +0200 | 
| commit | a67dde1f16c144247cff0b765201e64f8f8e75c2 (patch) | |
| tree | a1d72542bfba78056d549be3f4eaddbf0b1e74ff | |
| parent | 746788e78901835aeb3ba983840092ce97b257da (diff) | |
SL-20783 Fix excessive control messages
controlFlagsDirty() gets set every frame as an example if 'w' is held,
causing viewer to send updates each frame, which can be excessive
| -rw-r--r-- | indra/newview/llappviewer.cpp | 19 | 
1 files changed, 13 insertions, 6 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 2599b1e4a0..401476e177 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -4681,16 +4681,23 @@ void LLAppViewer::idle()  		// 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))) +        bool timed_out = agent_update_time > (1.0f / (F32)AGENT_UPDATES_PER_SECOND); +        BOOL force_send = +            // if there is something to send +            (gAgent.controlFlagsDirty() && timed_out) +            // if something changed +            || (mLastAgentControlFlags != gAgent.getControlFlags()) +            // keep alive +            || (agent_force_update_time > (1.0f / (F32) AGENT_FORCE_UPDATES_PER_SECOND)); +        // timing out doesn't warranty that an update will be sent, +        // just that it will be checked. +		if (force_send || timed_out)  		{  			LL_PROFILE_ZONE_SCOPED_CATEGORY_NETWORK;  			// Send avatar and camera info  			mLastAgentControlFlags = gAgent.getControlFlags(); -			mLastAgentForceUpdate = force_update ? 0 : agent_force_update_time; -			send_agent_update(force_update); +			mLastAgentForceUpdate = force_send ? 0 : agent_force_update_time; +			send_agent_update(force_send);  			agent_update_timer.reset();  		}  	}  | 
