summaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-01-19 12:52:41 +1100
committerjacqueline <me@jacqueline.id.au>2024-01-19 12:52:41 +1100
commitcd650b30bd3ddfb9f71622278ef5b6f94ae27ac8 (patch)
tree482058e274f0daee21a1e8798cdd39e4b94be17c /src/ui
parent1525afe8aaadfaa877f8987f0ea224263a612b5e (diff)
downloadtangara-fw-cd650b30bd3ddfb9f71622278ef5b6f94ae27ac8.tar.gz
fix some lua stack leaks + add a console func to help debug
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/include/ui_events.hpp2
-rw-r--r--src/ui/include/ui_fsm.hpp2
-rw-r--r--src/ui/ui_fsm.cpp4
3 files changed, 8 insertions, 0 deletions
diff --git a/src/ui/include/ui_events.hpp b/src/ui/include/ui_events.hpp
index 07b18dea..5c033b0c 100644
--- a/src/ui/include/ui_events.hpp
+++ b/src/ui/include/ui_events.hpp
@@ -28,6 +28,8 @@ struct OnLuaError : tinyfsm::Event {
std::string message;
};
+struct DumpLuaStack : tinyfsm::Event {};
+
namespace internal {
struct ControlSchemeChanged : tinyfsm::Event {};
diff --git a/src/ui/include/ui_fsm.hpp b/src/ui/include/ui_fsm.hpp
index 583a00a5..9de1169b 100644
--- a/src/ui/include/ui_fsm.hpp
+++ b/src/ui/include/ui_fsm.hpp
@@ -51,6 +51,7 @@ class UiState : public tinyfsm::Fsm<UiState> {
void react(const tinyfsm::Event& ev) {}
virtual void react(const OnLuaError&) {}
+ virtual void react(const DumpLuaStack&) {}
virtual void react(const internal::BackPressed&) {}
virtual void react(const system_fsm::BootComplete&) {}
virtual void react(const system_fsm::StorageMounted&) {}
@@ -148,6 +149,7 @@ class Lua : public UiState {
void exit() override;
void react(const OnLuaError&) override;
+ void react(const DumpLuaStack&) override;
void react(const internal::BackPressed&) override;
using UiState::react;
diff --git a/src/ui/ui_fsm.cpp b/src/ui/ui_fsm.cpp
index 7f94abc5..e532e693 100644
--- a/src/ui/ui_fsm.cpp
+++ b/src/ui/ui_fsm.cpp
@@ -541,6 +541,10 @@ void Lua::react(const OnLuaError& err) {
ESP_LOGE("lua", "%s", err.message.c_str());
}
+void Lua::react(const DumpLuaStack& ev) {
+ sLua->DumpStack();
+}
+
void Lua::react(const internal::BackPressed& ev) {
PopLuaScreen(sLua->state());
}