aboutsummaryrefslogtreecommitdiff
path: root/niri-visual-tests/src/cases
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-11-24 09:41:43 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-11-25 04:07:59 -0800
commit4c22c3285d8b10fbcef1c45a0788c3ddca03ec62 (patch)
tree506174fe9962a91598ac25d4d2dee1cdaa3d5292 /niri-visual-tests/src/cases
parent93cee2994ab9ccf59a09f61d5b8acf6cd937d654 (diff)
downloadniri-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.rs11
-rw-r--r--niri-visual-tests/src/cases/gradient_area.rs11
-rw-r--r--niri-visual-tests/src/cases/layout.rs15
-rw-r--r--niri-visual-tests/src/cases/tile.rs4
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(