diff options
author | Mister Benjamin <mb@mbno.org> | 2020-04-22 10:50:43 +0200 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2020-04-23 08:19:20 -0600 |
commit | 46fca9062d286820a24812797fb74afd742384aa (patch) | |
tree | 874d42e26b23beaa9dd19f308a59a1e686cba2e4 /gtk2_ardour | |
parent | 54bc1018d51eedab16da6b2148a145b445af0b03 (diff) |
Honour forward/rewind option when already rolling #8031
The options ForwardSlow, Forward and ForwardFast and their
respective Rewind options were not honoured in the execution
of forward/rewind operations when the transport was already
rolling at a slower speed than the forward or rewind option's
speed with same direction as the requested direction.
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 341de85db7..fdc69c263c 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -1981,23 +1981,24 @@ ARDOUR_UI::transport_ffwd_rewind (int option, int dir) * (-1, 0, 1) to get directional value */ - const float current_transport_speed = _session->engine_speed () * _session->transport_speed(); - float target_speed; + const float current_transport_speed = _session->engine_speed () * _session->transport_speed (); + float target_speed = current_transport_speed; - if ((dir < 0 && current_transport_speed >= 0.0f) || (dir > 0 && current_transport_speed <= 0.0f)) { - switch (option) { - case 0: - target_speed = dir * 1.0f; - break; - case 1: - target_speed = dir * 4.0f; - break; - case -1: - target_speed = dir * 0.5f; - break; - } - } else { - /* speed up */ + switch (option) { + case 0: + target_speed = dir * 1.0f; + break; + case 1: + target_speed = dir * 4.0f; + break; + case -1: + target_speed = dir * 0.5f; + break; + } + + bool speed_up = (dir > 0 && current_transport_speed >= target_speed); + speed_up = speed_up || (dir < 0 && current_transport_speed <= target_speed); + if (speed_up) { target_speed = current_transport_speed * 1.5f; } |