mirror of
https://github.com/liquidraver/ZephCore.git
synced 2026-09-02 15:33:49 +00:00
UIScreen gains onEnter()/onExit() lifecycle hooks; poll() and the _curr->poll() call in the main loop are removed. Each screen with periodic or deadline-based work owns its own k_timer: - one-shot timers: Splash dismiss, Countdown alarm, Contacts ping timeout, RepeaterAdmin cmd/login timeout, Unread preview expiry - periodic timers: Snake tick, GPSSettings sample - onEnter()-only: Repeaters discover, Doom start - deleted: Home, Stopwatch (were empty) Timer ISR callbacks only signal _task->notify() — never mutate screen state. Main-thread render() handles transitions. Setting _curr now fires onExit on the outgoing screen and onEnter on the incoming one, so timers are scoped to screen lifetime and can't fire stale events on the wrong screen.