launcher: improvements to screensaver mode
This commit is contained in:
parent
7f8973a8cc
commit
0546859073
@ -130,9 +130,19 @@ bool app_loop() {
|
|||||||
watch_rtc_register_alarm_callback(cb_alarm_fired, alarm_time, ALARM_MATCH_SS);
|
watch_rtc_register_alarm_callback(cb_alarm_fired, alarm_time, ALARM_MATCH_SS);
|
||||||
watch_register_extwake_callback(BTN_ALARM, cb_alarm_btn_extwake, true);
|
watch_register_extwake_callback(BTN_ALARM, cb_alarm_btn_extwake, true);
|
||||||
event.value = 0;
|
event.value = 0;
|
||||||
event.bit.event_type = EVENT_SCREENSAVER;
|
|
||||||
widgets[launcher_state.current_widget].loop(event, &launcher_state.launcher_settings, widget_contexts[launcher_state.current_widget]);
|
// this is a little mini-runloop.
|
||||||
watch_enter_shallow_sleep(true);
|
// as long as screensaver_ticks is -1 (i.e. screensaver is active), we wake up here, update the screen, and go right back to sleep.
|
||||||
|
while (launcher_state.screensaver_ticks == -1) {
|
||||||
|
event.bit.event_type = EVENT_SCREENSAVER;
|
||||||
|
widgets[launcher_state.current_widget].loop(event, &launcher_state.launcher_settings, widget_contexts[launcher_state.current_widget]);
|
||||||
|
watch_enter_shallow_sleep(true);
|
||||||
|
}
|
||||||
|
// as soon as screensaver_ticks is reset by the extwake handler, we bail out of the loop and reactivate ourselves.
|
||||||
|
event.bit.event_type = EVENT_ACTIVATE;
|
||||||
|
// this is a hack tho: waking from shallow sleep, app_setup does get called, but it happens before we have reset our ticks.
|
||||||
|
// need to figure out if there's a better heuristic for determining how we woke up.
|
||||||
|
app_setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool can_sleep = true;
|
bool can_sleep = true;
|
||||||
@ -175,10 +185,8 @@ void cb_alarm_btn_interrupt() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void cb_alarm_btn_extwake() {
|
void cb_alarm_btn_extwake() {
|
||||||
|
// wake up!
|
||||||
_launcher_reset_screensaver_countdown();
|
_launcher_reset_screensaver_countdown();
|
||||||
// this is a hack: waking from shallow sleep, app_setup does get called, but it happens before we reset our ticks.
|
|
||||||
// need to figure out if there's a better heuristic for determining how we woke up.
|
|
||||||
app_setup();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cb_alarm_fired() {
|
void cb_alarm_fired() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user