summaryrefslogtreecommitdiff
path: root/indra/newview/llappviewer.cpp
diff options
context:
space:
mode:
authorleviathan <leviathan@lindenlab.com>2024-09-03 15:38:35 -0700
committerAndrew Meadows <andrew.l.meadows@gmail.com>2024-10-03 09:16:46 -0700
commit0617923ae7f450ece7288f8a73446c45a8ed32db (patch)
tree1914627e41be3619eb335aa28e6acdfb98925ea0 /indra/newview/llappviewer.cpp
parent8213a0fb6b3149042d6833c8f0c4a3c1bfdc8bc9 (diff)
remove crashy LLSD ctor used by GameControl
Diffstat (limited to 'indra/newview/llappviewer.cpp')
-rw-r--r--indra/newview/llappviewer.cpp13
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();
}
//////////////////////////////////////