From 331e427e3d4cfc129b15f183dcfefe7f182a4e06 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 15 Mar 2020 00:47:47 +0100 Subject: [PATCH] Only bother going into an ease if there is an actual speed change. --- futatabi/player.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/futatabi/player.cpp b/futatabi/player.cpp index 982091d..c5581b4 100644 --- a/futatabi/player.cpp +++ b/futatabi/player.cpp @@ -154,6 +154,10 @@ public: void change_master_speed(double new_master_speed, Instant now); + float in_master_speed(float speed) const { + return (!in_easing && fabs(master_speed - speed) < 1e-6); + } + // Instead of changing the speed instantly, change it over the course of // about 200 ms. This is a simple linear ramp; I tried various forms of // Bézier curves for more elegant/dramatic changing, but it seemed linear @@ -334,7 +338,7 @@ void Player::play_playlist_once() next_frame_start = instant.wallclock_time; float new_master_speed = change_master_speed.exchange(0.0f / 0.0f); - if (!std::isnan(new_master_speed)) { + if (!std::isnan(new_master_speed) && !timeline.in_master_speed(new_master_speed)) { timeline.start_easing(new_master_speed, instant); } -- 2.39.2