From d38b52c0c41ef63a83bb12f2841554ca56b213d0 Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Tue, 11 Feb 2025 12:00:51 +0200 Subject: [PATCH] refactor(core): simplify `fade_backlight_duration` - IIUC, casting to and from `i32` can be removed. - `timer.elapsed()` can be evaluated once per loop iteration. [no changelog] --- core/embed/rust/src/ui/display/mod.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/core/embed/rust/src/ui/display/mod.rs b/core/embed/rust/src/ui/display/mod.rs index a48d0e9bb9..3c7fe9e99b 100644 --- a/core/embed/rust/src/ui/display/mod.rs +++ b/core/embed/rust/src/ui/display/mod.rs @@ -41,25 +41,27 @@ pub fn fade_backlight(target: u8) { #[cfg(feature = "backlight")] pub fn fade_backlight_duration(target: u8, duration_ms: u32) { - let target = target as i32; - let current = backlight() as i32; + let current = backlight(); let duration = Duration::from_millis(duration_ms); if animation_disabled() { - set_backlight(target as u8); + set_backlight(target); return; } let timer = Stopwatch::new_started(); - while timer.elapsed() < duration { + loop { let elapsed = timer.elapsed(); - let val = i32::lerp(current, target, elapsed / duration); - set_backlight(val as u8); + if elapsed >= duration { + break; + } + let val = u8::lerp(current, target, elapsed / duration); + set_backlight(val); time::sleep(Duration::from_millis(1)); } //account for imprecise rounding - set_backlight(target as u8); + set_backlight(target); } #[cfg(not(feature = "backlight"))]