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 | |
parent | 8213a0fb6b3149042d6833c8f0c4a3c1bfdc8bc9 (diff) |
remove crashy LLSD ctor used by GameControl
Diffstat (limited to 'indra/newview')
-rw-r--r-- | indra/newview/llagent.h | 2 | ||||
-rw-r--r-- | indra/newview/llappviewer.cpp | 13 | ||||
-rw-r--r-- | indra/newview/llappviewerlinux.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llfloaterpreference.cpp | 17 | ||||
-rw-r--r-- | indra/newview/llfloaterpreference.h | 6 | ||||
-rwxr-xr-x | indra/newview/viewer_manifest.py | 9 |
6 files changed, 27 insertions, 22 deletions
diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index a69a777e1e..448ee575f5 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -498,7 +498,7 @@ private: // mControlFlags is a bitmask of behavior instructions for compact // transmission to the server. It does NOT represent "input", rather // the consequences of it, which will sometimes depend on "state". - U32 mControlFlags; // Replacement for the mFooKey's + U32 mControlFlags; //-------------------------------------------------------------------- // GameControls 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(); } ////////////////////////////////////// diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp index 38f2f1ae7f..7ce74649e2 100644 --- a/indra/newview/llappviewerlinux.cpp +++ b/indra/newview/llappviewerlinux.cpp @@ -129,7 +129,7 @@ int main( int argc, char **argv ) return -1; } - // Run the application main loop + // Run the application main loop while (! viewer_app_ptr->frame()) {} diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 109db7e3d7..ec725a8ace 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -3506,8 +3506,21 @@ bool LLPanelPreferenceGameControl::postBuild() mCheckGameControlToAgent = getChild<LLCheckBoxCtrl>("game_control_to_agent"); mCheckAgentToGameControl = getChild<LLCheckBoxCtrl>("agent_to_game_control"); - mCheckGameControlToAgent->setCommitCallback([this](LLUICtrl*, const LLSD&) { updateActionTableState(); }); - mCheckAgentToGameControl->setCommitCallback([this](LLUICtrl*, const LLSD&) { updateActionTableState(); }); + mCheckGameControlToServer->setCommitCallback([this](LLUICtrl*, const LLSD&) + { + LLGameControl::setSendToServer(mCheckGameControlToServer->getValue()); + updateActionTableState(); + }); + mCheckGameControlToAgent->setCommitCallback([this](LLUICtrl*, const LLSD&) + { + LLGameControl::setControlAgent(mCheckGameControlToAgent->getValue()); + updateActionTableState(); + }); + mCheckAgentToGameControl->setCommitCallback([this](LLUICtrl*, const LLSD&) + { + LLGameControl::setTranslateAgentActions(mCheckAgentToGameControl->getValue()); + updateActionTableState(); + }); getChild<LLTabContainer>("game_control_tabs")->setCommitCallback([this](LLUICtrl*, const LLSD&) { clearSelectionState(); }); getChild<LLTabContainer>("device_settings_tabs")->setCommitCallback([this](LLUICtrl*, const LLSD&) { clearSelectionState(); }); diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 57eaa193a3..33d1cb0c87 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -447,9 +447,9 @@ private: void resetButtonMappingsToDefaults(); // Above the tab container - LLCheckBoxCtrl *mCheckGameControlToServer; // send game_control data to server - LLCheckBoxCtrl *mCheckGameControlToAgent; // use game_control data to move avatar - LLCheckBoxCtrl *mCheckAgentToGameControl; // translate external avatar actions to game_control data + LLCheckBoxCtrl* mCheckGameControlToServer; // send game_control data to server + LLCheckBoxCtrl* mCheckGameControlToAgent; // use game_control data to move avatar + LLCheckBoxCtrl* mCheckAgentToGameControl; // translate external avatar actions to game_control data // 1st tab "Channel mappings" LLPanel* mTabChannelMappings; diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 39b81f2395..efc90b8991 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -1420,15 +1420,6 @@ class Linux_x86_64_Manifest(LinuxManifest): self.path_optional("libjemalloc*.so") - self.path("libdb*.so") - self.path("libuuid.so*") - self.path("libdirectfb-1.*.so.*") - self.path("libfusion-1.*.so.*") - self.path("libdirect-1.*.so.*") - self.path("libopenjp2.so*") - self.path("libdirectfb-1.4.so.5") - self.path("libfusion-1.4.so.5") - self.path("libdirect-1.4.so.5*") self.path("libalut.so*") self.path("libopenal.so*") self.path("libopenal.so", "libvivoxoal.so.1") # vivox's sdk expects this soname |