fix: ensure backlight turns back on during startMcpScreensaver and invalidate canvas on drawText

This commit is contained in:
Adolfo Reyna
2026-06-27 09:41:40 -04:00
parent cd921e1aa9
commit 598af546fd
3 changed files with 66 additions and 4 deletions
+5 -4
View File
@@ -78,12 +78,12 @@ static bool display_ready(McpSystemState& state) {
static bool ensureOverrideScreen() {
auto& state = getState();
if (state.drawArea == nullptr) {
// Activate the MCP Screen screensaver via DisplayIdle
// Activate the MCP screensaver via DisplayIdle (force McpScreensaver type)
auto idleService = service::displayidle::findService();
if (idleService) {
LOGGER.info("MCP draw triggered: starting MCP screensaver");
idleService->startScreensaver();
// Wait up to 500ms for the canvas to be registered
LOGGER.info("MCP draw triggered: activating MCP screensaver");
idleService->startMcpScreensaver();
// Wait up to 500ms for the canvas to be registered by McpScreensaver::start()
for (int i = 0; i < 10; ++i) {
vTaskDelay(pdMS_TO_TICKS(50));
if (state.drawArea != nullptr) {
@@ -162,6 +162,7 @@ bool drawText(const std::string& text, int x, int y, int size) {
}
#endif
lv_obj_invalidate(state.drawArea); // Trigger repaint
state.overrideActive = true;
success = true;
}