summaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-01-17 17:50:57 +1100
committerjacqueline <me@jacqueline.id.au>2024-01-17 17:50:57 +1100
commitc1b7a0c9f2192121fad972dccc7d0a1fe0dee45e (patch)
treec07f49517d64aed041f45ca4870d68a6cdee16c8 /src/ui
parentea8a7b0f93aa3b391e92d7b930f667d1ff439d04 (diff)
downloadtangara-fw-c1b7a0c9f2192121fad972dccc7d0a1fe0dee45e.tar.gz
move lua ui-related data to spi ram
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/ui_fsm.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/ui/ui_fsm.cpp b/src/ui/ui_fsm.cpp
index 20d52f8e..7f94abc5 100644
--- a/src/ui/ui_fsm.cpp
+++ b/src/ui/ui_fsm.cpp
@@ -7,6 +7,7 @@
#include "ui_fsm.hpp"
#include <memory>
+#include <memory_resource>
#include <variant>
#include "bluetooth_types.hpp"
@@ -26,6 +27,7 @@
#include "lauxlib.h"
#include "lua_thread.hpp"
#include "luavgl.h"
+#include "memory_resource.hpp"
#include "misc/lv_gc.h"
#include "audio_events.hpp"
@@ -449,8 +451,12 @@ auto Lua::PushLuaScreen(lua_State* s) -> int {
luaL_checktype(s, 1, LUA_TFUNCTION);
// First, create a new plain old Screen object. We will use its root and
- // group for the Lua screen.
- auto new_screen = std::make_shared<screens::Lua>();
+ // group for the Lua screen. Allocate it in external ram so that arbitrarily
+ // deep screen stacks don't cause too much memory pressure.
+ auto new_screen =
+ std::allocate_shared<screens::Lua,
+ std::pmr::polymorphic_allocator<screens::Lua>>(
+ &memory::kSpiRamResource);
// Tell lvgl about the new roots.
luavgl_set_root(s, new_screen->content());