diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-11-24 09:41:43 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-11-25 04:07:59 -0800 |
| commit | 4c22c3285d8b10fbcef1c45a0788c3ddca03ec62 (patch) | |
| tree | 506174fe9962a91598ac25d4d2dee1cdaa3d5292 /niri-visual-tests/src/cases | |
| parent | 93cee2994ab9ccf59a09f61d5b8acf6cd937d654 (diff) | |
| download | niri-4c22c3285d8b10fbcef1c45a0788c3ddca03ec62.tar.gz niri-4c22c3285d8b10fbcef1c45a0788c3ddca03ec62.tar.bz2 niri-4c22c3285d8b10fbcef1c45a0788c3ddca03ec62.zip | |
Refactor animation timing to use lazy clocks
Diffstat (limited to 'niri-visual-tests/src/cases')
| -rw-r--r-- | niri-visual-tests/src/cases/gradient_angle.rs | 11 | ||||
| -rw-r--r-- | niri-visual-tests/src/cases/gradient_area.rs | 11 | ||||
| -rw-r--r-- | niri-visual-tests/src/cases/layout.rs | 15 | ||||
| -rw-r--r-- | niri-visual-tests/src/cases/tile.rs | 4 |
4 files changed, 12 insertions, 29 deletions
diff --git a/niri-visual-tests/src/cases/gradient_angle.rs b/niri-visual-tests/src/cases/gradient_angle.rs index 64c953c4..39a2e4ef 100644 --- a/niri-visual-tests/src/cases/gradient_angle.rs +++ b/niri-visual-tests/src/cases/gradient_angle.rs @@ -1,8 +1,6 @@ use std::f32::consts::{FRAC_PI_2, PI}; -use std::sync::atomic::Ordering; use std::time::Duration; -use niri::animation::ANIMATION_SLOWDOWN; use niri::render_helpers::border::BorderRenderElement; use niri_config::{Color, CornerRadius, GradientInterpolation}; use smithay::backend::renderer::element::RenderElement; @@ -31,20 +29,13 @@ impl TestCase for GradientAngle { } fn advance_animations(&mut self, current_time: Duration) { - let mut delta = if self.prev_time.is_zero() { + let delta = if self.prev_time.is_zero() { Duration::ZERO } else { current_time.saturating_sub(self.prev_time) }; self.prev_time = current_time; - let slowdown = ANIMATION_SLOWDOWN.load(Ordering::SeqCst); - if slowdown == 0. { - delta = Duration::ZERO - } else { - delta = delta.div_f64(slowdown); - } - self.angle += delta.as_secs_f32() * PI; if self.angle >= PI * 2. { diff --git a/niri-visual-tests/src/cases/gradient_area.rs b/niri-visual-tests/src/cases/gradient_area.rs index 2fa275f2..6f0cf4f3 100644 --- a/niri-visual-tests/src/cases/gradient_area.rs +++ b/niri-visual-tests/src/cases/gradient_area.rs @@ -1,8 +1,6 @@ use std::f32::consts::{FRAC_PI_4, PI}; -use std::sync::atomic::Ordering; use std::time::Duration; -use niri::animation::ANIMATION_SLOWDOWN; use niri::layout::focus_ring::FocusRing; use niri::render_helpers::border::BorderRenderElement; use niri_config::{Color, CornerRadius, FloatOrInt, GradientInterpolation}; @@ -43,20 +41,13 @@ impl TestCase for GradientArea { } fn advance_animations(&mut self, current_time: Duration) { - let mut delta = if self.prev_time.is_zero() { + let delta = if self.prev_time.is_zero() { Duration::ZERO } else { current_time.saturating_sub(self.prev_time) }; self.prev_time = current_time; - let slowdown = ANIMATION_SLOWDOWN.load(Ordering::SeqCst); - if slowdown == 0. { - delta = Duration::ZERO - } else { - delta = delta.div_f64(slowdown); - } - self.progress += delta.as_secs_f32() * PI; if self.progress >= PI * 2. { diff --git a/niri-visual-tests/src/cases/layout.rs b/niri-visual-tests/src/cases/layout.rs index f979debb..0dbe004d 100644 --- a/niri-visual-tests/src/cases/layout.rs +++ b/niri-visual-tests/src/cases/layout.rs @@ -69,7 +69,7 @@ impl Layout { let mut layout = niri::layout::Layout::with_options(clock.clone(), options); layout.add_output(output.clone()); - let start_time = clock.now(); + let start_time = clock.now_unadjusted(); Self { output, @@ -207,24 +207,25 @@ impl TestCase for Layout { self.layout.are_animations_ongoing(Some(&self.output)) || !self.steps.is_empty() } - fn advance_animations(&mut self, current_time: Duration) { + fn advance_animations(&mut self, _current_time: Duration) { + let now_unadjusted = self.clock.now_unadjusted(); let run = self .steps .keys() .copied() - .filter(|delay| self.start_time + *delay <= current_time) + .filter(|delay| self.start_time + *delay <= now_unadjusted) .collect::<Vec<_>>(); for delay in &run { let now = self.start_time + *delay; - self.clock.set_time_override(Some(now)); - self.layout.advance_animations(now); + self.clock.set_unadjusted(now); + self.layout.advance_animations(); let f = self.steps.remove(delay).unwrap(); f(self); } - self.clock.set_time_override(None); - self.layout.advance_animations(current_time); + self.clock.set_unadjusted(now_unadjusted); + self.layout.advance_animations(); } fn render( diff --git a/niri-visual-tests/src/cases/tile.rs b/niri-visual-tests/src/cases/tile.rs index e2637698..f50edf37 100644 --- a/niri-visual-tests/src/cases/tile.rs +++ b/niri-visual-tests/src/cases/tile.rs @@ -90,8 +90,8 @@ impl TestCase for Tile { self.tile.are_animations_ongoing() } - fn advance_animations(&mut self, current_time: Duration) { - self.tile.advance_animations(current_time); + fn advance_animations(&mut self, _current_time: Duration) { + self.tile.advance_animations(); } fn render( |
