diff --git a/lib/Figments/Renderer.cpp b/lib/Figments/Renderer.cpp index 3b93603..874c944 100644 --- a/lib/Figments/Renderer.cpp +++ b/lib/Figments/Renderer.cpp @@ -3,6 +3,18 @@ #include +#ifndef __NOINIT_ATTR // Pre-defined on esp32 +#define __NOINIT_ATTR __attribute__ ((section (".noinit"))) +#endif + +__NOINIT_ATTR const char* s_lastFigmentName; + +const char* +Renderer::lastFigmentName() +{ + return s_lastFigmentName; +} + void Renderer::loop() { @@ -13,6 +25,7 @@ Renderer::loop() unsigned int frameStart = ESP.getCycleCount(); #endif Log.verbose("Render %s", figment->name); + s_lastFigmentName = figment->name; figment->render(dpy); #if defined(BOARD_ESP32) or defined(BOARD_ESP8266) unsigned int runtime = (ESP.getCycleCount() - frameStart) / 160000; diff --git a/lib/Figments/Renderer.h b/lib/Figments/Renderer.h index 489a9b3..03ad998 100644 --- a/lib/Figments/Renderer.h +++ b/lib/Figments/Renderer.h @@ -10,6 +10,8 @@ public: void loop() override; void onStart() override; + static const char* lastFigmentName(); + private: const std::vector m_figments; const std::vector m_displays;