From 5c0ad3e59021ef07e21bc821ac6ff3e28af37b11 Mon Sep 17 00:00:00 2001 From: "Luke D. Jones" Date: Mon, 6 Jun 2022 18:18:35 +1200 Subject: [PATCH] Re-enable notification on anime power-state change --- daemon/src/ctrl_anime/zbus.rs | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/daemon/src/ctrl_anime/zbus.rs b/daemon/src/ctrl_anime/zbus.rs index 86daf24b..da8e2767 100644 --- a/daemon/src/ctrl_anime/zbus.rs +++ b/daemon/src/ctrl_anime/zbus.rs @@ -68,24 +68,29 @@ impl CtrlAnimeZbus { } /// Set whether the AniMe is displaying images/data - fn set_on_off(&self, status: bool) { + async fn set_on_off(&self, #[zbus(signal_context)] ctxt: SignalContext<'_>, status: bool) { + let mut states = None; 'outer: loop { if let Ok(mut lock) = self.0.try_lock() { lock.write_bytes(&pkt_for_set_on(status)); lock.config.awake_enabled = status; lock.config.write(); - // let states = AnimePowerStates { - // enabled: lock.config.awake_enabled, - // boot_anim_enabled: lock.config.boot_anim_enabled, - // }; + states = Some(AnimePowerStates { + enabled: lock.config.awake_enabled, + boot_anim_enabled: lock.config.boot_anim_enabled, + }); break 'outer; } } + if let Some(state) = states { + Self::notify_power_states(&ctxt, state).await.ok(); + } } /// Set whether the AniMe will show boot, suspend, or off animations - fn set_boot_on_off(&self, on: bool) { + async fn set_boot_on_off(&self, #[zbus(signal_context)] ctxt: SignalContext<'_>, on: bool) { + let mut states = None; 'outer: loop { if let Ok(mut lock) = self.0.try_lock() { lock.write_bytes(&pkt_for_set_boot(on)); @@ -93,13 +98,16 @@ impl CtrlAnimeZbus { lock.config.boot_anim_enabled = on; lock.config.write(); - // let states = AnimePowerStates { - // enabled: lock.config.awake_enabled, - // boot_anim_enabled: lock.config.boot_anim_enabled, - // }; + states = Some(AnimePowerStates { + enabled: lock.config.awake_enabled, + boot_anim_enabled: lock.config.boot_anim_enabled, + }); break 'outer; } } + if let Some(state) = states { + Self::notify_power_states(&ctxt, state).await.ok(); + } } /// The main loop is the base system set action if the user isn't running @@ -116,7 +124,7 @@ impl CtrlAnimeZbus { } } - /// Get status of if the AniMe LEDs are on + /// Get status of if the AniMe LEDs are on/displaying while system is awake #[dbus_interface(property)] fn awake_enabled(&self) -> bool { if let Ok(ctrl) = self.0.try_lock() {