From aa9b884df3681e2feb4fd32a8ce53b5a05df4e69 Mon Sep 17 00:00:00 2001 From: Cruel Date: Sat, 22 Aug 2015 23:10:30 -0400 Subject: [PATCH] Change Console init method and add memory monitor --- include/cpp3ds/Graphics/Console.hpp | 5 +++- src/cpp3ds/Graphics/Console.cpp | 37 +++++++++++++++++++++++------ src/cpp3ds/Window/Game.cpp | 1 + 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/include/cpp3ds/Graphics/Console.hpp b/include/cpp3ds/Graphics/Console.hpp index 55196b1..222b3b1 100644 --- a/include/cpp3ds/Graphics/Console.hpp +++ b/include/cpp3ds/Graphics/Console.hpp @@ -50,6 +50,8 @@ public: void setVisible(bool visible); + static void initialize(); + private: //////////////////////////////////////////////////////////// @@ -66,8 +68,9 @@ private: //////////////////////////////////////////////////////////// Font m_font; std::vector m_lines; + Text m_memoryText; unsigned int m_limit; - bool m_initialized; + static bool m_initialized; bool m_visible; }; diff --git a/src/cpp3ds/Graphics/Console.cpp b/src/cpp3ds/Graphics/Console.cpp index 4e9600f..b0ef7e1 100644 --- a/src/cpp3ds/Graphics/Console.cpp +++ b/src/cpp3ds/Graphics/Console.cpp @@ -9,8 +9,10 @@ #include #include #include +#include #ifndef EMULATION #include +extern u32 __linear_heap_size; #endif namespace cpp3ds { @@ -40,6 +42,9 @@ static const devoptab_t dotab_stdout = { namespace cpp3ds { + +bool Console::m_initialized = false; + //////////////////////////////////////////////////////////// Console::Console() { @@ -58,7 +63,7 @@ Console::~Console() //////////////////////////////////////////////////////////// -void Console::create() +void Console::initialize() { if (!m_initialized) { m_initialized = true; @@ -67,16 +72,25 @@ void Console::create() devoptab_list[STD_ERR] = &dotab_stdout; setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stderr, NULL, _IONBF, 0); - - priv::ResourceInfo font = priv::core_resources["opensans.ttf"]; - m_font.loadFromMemory(font.data, font.size); #endif - - m_limit = 1000; } } +//////////////////////////////////////////////////////////// +void Console::create() +{ + initialize(); + priv::ResourceInfo font = priv::core_resources["opensans.ttf"]; + m_font.loadFromMemory(font.data, font.size); + + m_memoryText.setFont(m_font); + m_memoryText.setCharacterSize(12); + + m_limit = 1000; +} + + //////////////////////////////////////////////////////////// void Console::update(float delta) { @@ -86,6 +100,13 @@ void Console::update(float delta) if (m_lines.size() > m_limit) m_lines.erase(m_lines.begin(), m_lines.end() - m_limit); + + #ifndef EMULATION + std::ostringstream ss; + ss << (__linear_heap_size - linearSpaceFree()) / 1024 << "kb / " << __linear_heap_size / 1024 << "kb"; + m_memoryText.setString(ss.str()); + m_memoryText.setPosition(395 - m_memoryText.getGlobalBounds().width, 5); + #endif } @@ -101,7 +122,7 @@ void Console::write(String text) bool Console::processEvent(Event& event) { if (event.type == Event::KeyPressed) { - if (event.key.code == Keyboard::A) { + if (event.key.code == Keyboard::DPadDown && Keyboard::isKeyDown(Keyboard::R)) { m_visible = !m_visible; return false; } @@ -134,6 +155,8 @@ void Console::draw(RenderTarget& target, RenderStates states) const text.setPosition(0, h); target.draw(text); } + + target.draw(m_memoryText); } diff --git a/src/cpp3ds/Window/Game.cpp b/src/cpp3ds/Window/Game.cpp index 75fdf61..177f961 100644 --- a/src/cpp3ds/Window/Game.cpp +++ b/src/cpp3ds/Window/Game.cpp @@ -11,6 +11,7 @@ Game::Game() { gfxInitDefault(); initCfgu(); + Console::initialize(); windowTop.create(ContextSettings(TopScreen)); windowBottom.create(ContextSettings(BottomScreen));