@@ -57,6 +57,11 @@ namespace {
5757 inline bool in_isr () {
5858 return (SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) != 0 ;
5959 }
60+
61+ void TimerCallback (TimerHandle_t xTimer) {
62+ auto * dispApp = static_cast <DisplayApp*>(pvTimerGetTimerID (xTimer));
63+ dispApp->PushMessage (Display::Messages::TimerDone);
64+ }
6065}
6166
6267DisplayApp::DisplayApp (Drivers::St7789& lcd,
@@ -70,7 +75,6 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd,
7075 Controllers::Settings& settingsController,
7176 Pinetime::Controllers::MotorController& motorController,
7277 Pinetime::Controllers::MotionController& motionController,
73- Pinetime::Controllers::TimerController& timerController,
7478 Pinetime::Controllers::AlarmController& alarmController,
7579 Pinetime::Controllers::BrightnessController& brightnessController,
7680 Pinetime::Controllers::TouchHandler& touchHandler,
@@ -86,12 +90,12 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd,
8690 settingsController {settingsController},
8791 motorController {motorController},
8892 motionController {motionController},
89- timerController {timerController},
9093 alarmController {alarmController},
9194 brightnessController {brightnessController},
9295 touchHandler {touchHandler},
9396 filesystem {filesystem},
94- lvgl {lcd, filesystem} {
97+ lvgl {lcd, filesystem},
98+ timerController (this , TimerCallback) {
9599}
96100
97101void DisplayApp::Start (System::BootErrors error) {
@@ -238,6 +242,9 @@ void DisplayApp::Refresh() {
238242 LoadNewScreen (Apps::NotificationsPreview, DisplayApp::FullRefreshDirections::Down);
239243 break ;
240244 case Messages::TimerDone:
245+ if (state != States::Running) {
246+ PushMessageToSystemTask (System::Messages::GoToRunning);
247+ }
241248 if (currentApp == Apps::Timer) {
242249 lv_disp_trig_activity (nullptr );
243250 auto * timer = static_cast <Screens::Timer*>(currentScreen.get ());
0 commit comments