anime: rework sleep logic

This commit is contained in:
Luke D. Jones
2023-11-16 09:59:05 +13:00
parent eda1e920df
commit b9c2d929b3

View File

@@ -260,30 +260,22 @@ impl crate::CtrlTask for CtrlAnimeZbus {
async move { async move {
let lock = inner.lock().await; let lock = inner.lock().await;
if lock.config.display_enabled { if lock.config.display_enabled {
if lock.config.off_when_suspended { lock.thread_exit.store(true, Ordering::Release); // ensure clean slate
lock.node lock.node
.write_bytes(&pkt_set_enable_display(!sleeping)) .write_bytes(&pkt_set_enable_display(
!(sleeping && lock.config.off_when_suspended),
))
.map_err(|err| { .map_err(|err| {
warn!("create_sys_event_tasks::off_when_suspended {}", err); warn!("create_sys_event_tasks::off_when_suspended {}", err);
}) })
.ok(); .ok();
}
if !lock.config.builtin_anims_enabled { if !sleeping && !lock.config.builtin_anims_enabled {
if sleeping {
lock.thread_exit.store(true, Ordering::Release);
lock.node
.write_bytes(&pkt_set_enable_display(!sleeping))
.map_err(|err| {
warn!("create_sys_event_tasks::off_when_suspended {}", err);
})
.ok();
} else {
CtrlAnime::run_thread(inner.clone(), lock.cache.wake.clone(), true) CtrlAnime::run_thread(inner.clone(), lock.cache.wake.clone(), true)
.await; .await;
} }
} }
} }
}
}, },
move |shutting_down| { move |shutting_down| {
// on_shutdown // on_shutdown