feat(display): Bible Verse screensaver + longer idle timeouts

- ScreensaverType::BibleVerse launches one.tactility.bibleverse on
  idle (falls back to black when not installed); tap stops the app
  and returns to launcher; 30-minute backlight auto-off stops it too
- Timeout options extended to 15/30 minutes; auto-off 5m -> 30m
- Screensaver dropdown lists Bible Verse
This commit is contained in:
Adolfo Reyna
2026-09-12 09:03:37 -04:00
parent 85da419a98
commit 054d1286b2
5 changed files with 93 additions and 15 deletions
@@ -5,6 +5,8 @@
#include <Tactility/settings/DisplaySettings.h>
#include <Tactility/Timer.h>
#include <app/instance.h>
#include <atomic>
#include <memory>
@@ -29,9 +31,15 @@ class DisplayIdleService final : public Service {
// Active screensaver instance
std::unique_ptr<Screensaver> screensaver;
// Screensaver auto-off: turn off backlight after 5 minutes of screensaver
// App launched as screensaver (Bible Verse): instance id, 0 when none.
// A separate flag (not just the id) tracks intent, so a user-closed app
// doesn't look like an active screensaver and vice versa.
AppInstanceId screensaverAppInstanceId = 0;
bool screensaverAppActive = false;
// Screensaver auto-off: turn off backlight after 30 minutes of screensaver
static constexpr uint32_t TICK_INTERVAL_MS = 50;
static constexpr uint32_t SCREENSAVER_AUTO_OFF_MS = 5 * 60 * 1000; // 5 minutes
static constexpr uint32_t SCREENSAVER_AUTO_OFF_MS = 30 * 60 * 1000; // 30 minutes
static constexpr int SCREENSAVER_AUTO_OFF_TICKS = SCREENSAVER_AUTO_OFF_MS / TICK_INTERVAL_MS;
int screensaverActiveCounter = 0;
bool backlightOff = false;