From 568f3e848f0daf10d6e50e4c590eff93a4fe9023 Mon Sep 17 00:00:00 2001 From: I-Al-Istannen Date: Thu, 27 Mar 2025 21:02:51 +0100 Subject: [PATCH] Fix anime flickering when repeatedly setting images in a tight loop --- asusd/src/aura_anime/trait_impls.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/asusd/src/aura_anime/trait_impls.rs b/asusd/src/aura_anime/trait_impls.rs index 834047c8..2e5828c4 100644 --- a/asusd/src/aura_anime/trait_impls.rs +++ b/asusd/src/aura_anime/trait_impls.rs @@ -69,7 +69,11 @@ impl AniMeZbus { /// it is restarted async fn write(&self, input: AnimeDataBuffer) -> zbus::fdo::Result<()> { let bright = self.0.config.lock().await.display_brightness; - self.0.set_builtins_enabled(false, bright).await?; + if self.0.config.lock().await.builtin_anims_enabled { + // This clears the display, causing flickers if done indiscriminately on every + // write. Therefore, we guard it behind a config check. + self.0.set_builtins_enabled(false, bright).await?; + } self.0.thread_exit.store(true, Ordering::SeqCst); self.0.write_data_buffer(input).await.map_err(|err| { warn!("ctrl_anime::run_animation:callback {}", err);