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 excessivemeow-7.2.2
parent
746788e789
commit
a67dde1f16
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue