fix: ensure backlight turns back on during startMcpScreensaver and invalidate canvas on drawText
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user