From 0d2643806067faeaca5bf4a83427db812f3b9225 Mon Sep 17 00:00:00 2001 From: Victor Kareh Date: Thu, 18 Jan 2024 16:08:49 -0500 Subject: [PATCH] DisplayApp: Go to clock on sleep if no app loaded When turning off the screen, if there is no actual app loaded (i.e. we are still in the Launcher, Notifications, QuickSettings, or Settings screens) we should just reload the Clock app directly. --- src/displayapp/DisplayApp.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index 394a323932..3be7656dc8 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -293,15 +293,27 @@ void DisplayApp::Refresh() { brightnessController.Lower(); vTaskDelay(100); } - // Don't actually turn off the display for AlwaysOn mode + // Turn brightness down (or set to AlwaysOn mode) if (settingsController.GetAlwaysOnDisplay()) { brightnessController.Set(Controllers::BrightnessController::Levels::AlwaysOn); + } else { + brightnessController.Set(Controllers::BrightnessController::Levels::Off); + } + // Since the active screen is not really an app, go back to Clock. + if (currentApp == Apps::Launcher || currentApp == Apps::Notifications || currentApp == Apps::QuickSettings || + currentApp == Apps::Settings) { + LoadScreen(Apps::Clock, DisplayApp::FullRefreshDirections::None); + // Wait for the clock app to load before moving on. + while (!lv_task_handler()) { + }; + } + // Turn LCD display off (or set to low power for AlwaysOn mode) + if (settingsController.GetAlwaysOnDisplay()) { lcd.LowPowerOn(); // Record idle entry time alwaysOnTickCount = 0; alwaysOnStartTime = xTaskGetTickCount(); } else { - brightnessController.Set(Controllers::BrightnessController::Levels::Off); lcd.Sleep(); } PushMessageToSystemTask(Pinetime::System::Messages::OnDisplayTaskSleeping);