diff options
author | leviathan <leviathan@lindenlab.com> | 2024-09-03 15:38:35 -0700 |
---|---|---|
committer | Andrew Meadows <andrew.l.meadows@gmail.com> | 2024-10-03 09:16:46 -0700 |
commit | 0617923ae7f450ece7288f8a73446c45a8ed32db (patch) | |
tree | 1914627e41be3619eb335aa28e6acdfb98925ea0 /indra/newview/llappviewer.cpp | |
parent | 8213a0fb6b3149042d6833c8f0c4a3c1bfdc8bc9 (diff) |
remove crashy LLSD ctor used by GameControl
Diffstat (limited to 'indra/newview/llappviewer.cpp')
-rw-r--r-- | indra/newview/llappviewer.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 475610be36..75cd189980 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -1531,7 +1531,7 @@ bool LLAppViewer::doFrame() LL_WARNS() << " Someone took over my signal/exception handler (post messagehandling)!" << LL_ENDL; } - gViewerWindow->getWindow()->gatherInput(); + gViewerWindow->getWindow()->gatherInput(gFocusMgr.getAppHasFocus()); } //memory leaking simulation @@ -4811,11 +4811,6 @@ void LLAppViewer::idle() gAgent.autoPilot(&yaw); } - // Some GameControl logic needs to run even when the feature is not enabled - // Note: we process game_control before sending AgentUpdate - // because it may translate to control flags that control avatar motion. - LLGameControl::processEvents(gFocusMgr.getAppHasFocus()); - // get control flags from each side U32 control_flags = gAgent.getControlFlags(); U32 game_control_action_flags = LLGameControl::computeInternalActionFlags(); @@ -4841,6 +4836,12 @@ void LLAppViewer::idle() } send_agent_update(false); + + // After calling send_agent_update() in the mainloop we always clear + // the agent's ephemeral ControlFlags (whether an AgentUpdate was + // actually sent or not) because these will be recomputed based on + // real-time key/controller input and resubmitted next frame. + gAgent.resetControlFlags(); } ////////////////////////////////////// |