diff --git a/Tactility/Source/service/displayidle/DisplayIdle.cpp b/Tactility/Source/service/displayidle/DisplayIdle.cpp index c5f6afb6..511ca5e7 100644 --- a/Tactility/Source/service/displayidle/DisplayIdle.cpp +++ b/Tactility/Source/service/displayidle/DisplayIdle.cpp @@ -206,35 +206,38 @@ void DisplayIdleService::tick() { auto display = getDisplay(); bool supportsBacklight = display != nullptr && display->supportsBacklightDuty(); - if (supportsBacklight) { - if (!cachedDisplaySettings.backlightTimeoutEnabled || cachedDisplaySettings.backlightTimeoutMs == 0) { - if (displayDimmed && !isMcpActive) { + if (!cachedDisplaySettings.backlightTimeoutEnabled || cachedDisplaySettings.backlightTimeoutMs == 0) { + // Timeout disabled (Never): ensure we restore if we were dimmed, regardless of display type + if (displayDimmed && !isMcpActive) { + if (supportsBacklight && display != nullptr) { display->setBacklightDuty(cachedDisplaySettings.backlightDuty); - displayDimmed = false; } - } else { - bool charging_blocks = cachedDisplaySettings.disableScreensaverWhenCharging && isDeviceCharging(); + displayDimmed = false; + } + } else { + bool charging_blocks = cachedDisplaySettings.disableScreensaverWhenCharging && isDeviceCharging(); - if (!displayDimmed && inactive_ms >= cachedDisplaySettings.backlightTimeoutMs) { - if (charging_blocks) { - // Skip screensaver while charging - } else { - if (!lvgl::lock(100)) { - return; // Retry on next tick - } - activateScreensaver(); - lvgl::unlock(); - if (cachedDisplaySettings.screensaverType == settings::display::ScreensaverType::None) { + if (!displayDimmed && inactive_ms >= cachedDisplaySettings.backlightTimeoutMs) { + if (charging_blocks) { + // Skip screensaver while charging + } else { + if (!lvgl::lock(100)) { + return; // Retry on next tick + } + activateScreensaver(); + lvgl::unlock(); + if (cachedDisplaySettings.screensaverType == settings::display::ScreensaverType::None) { + if (supportsBacklight && display != nullptr) { display->setBacklightDuty(0); } - displayDimmed = true; - } - } else if (displayDimmed && !isMcpActive) { - if (inactive_ms < kWakeActivityThresholdMs) { - stopScreensaver(); - } else if (charging_blocks) { - stopScreensaver(); } + displayDimmed = true; + } + } else if (displayDimmed && !isMcpActive) { + if (inactive_ms < kWakeActivityThresholdMs) { + stopScreensaver(); + } else if (charging_blocks) { + stopScreensaver(); } } }