fix(rlcd): freeze after flash - disable auto-screensaver on monochrome + reduce video stream hog

Frozen screen caused by 2 runtime issues after init fixes 3770ac89:
- BouncingBalls screensaver full_refresh SPI at 10MHz for 300x400 takes ~100ms per frame, hogs LVGL lock -> UI appears frozen stuck on weird image
- MCP video stream task vTaskDelay 5ms streaming holds LVGL lock too often -> starves UI and screenshot (could not acquire LVGL lock)

Fix:
- DisplayIdle tick: for !supportsBacklight (RLCD) don't auto-activate screensaver, only handle wake. Prevents heavy animation entering automatically after timeout (SD may have 60s setting).
- McpSystem video stream: 50ms->100ms idle, 5ms->30ms streaming to release LVGL lock
- Screenshot API: 100ms->500ms lock timeout, task 50->300ms for slow SPI

Build 0x2b79e0 RLCD, flashed.

Co-Authored-By: internal-model
This commit is contained in:
Adolfo Reyna
2026-07-11 22:00:00 -04:00
parent 3770ac8954
commit 6f095081d2
4 changed files with 18 additions and 8 deletions
@@ -49,7 +49,7 @@ void ScreenshotTask::setFinished() {
}
static void makeScreenshot(const std::string& filename) {
if (lvgl::lock(50 / portTICK_PERIOD_MS)) {
if (lvgl::lock(300 / portTICK_PERIOD_MS)) {
if (lv_screenshot_create(lv_scr_act(), LV_100ASK_SCREENSHOT_SV_PNG, filename.c_str())) {
LOGGER.info("Screenshot saved to {}", filename);
} else {