mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-08 15:54:57 +01:00
use new _requested_transport_speed member in Session to correctly apply speed after changing direction
This commit is contained in:
parent
07c16d38a2
commit
d8eb016aaa
1 changed files with 18 additions and 7 deletions
|
|
@ -380,7 +380,8 @@ Session::set_transport_speed (double speed, bool abort, bool clear_state, bool a
|
||||||
|
|
||||||
if (speed != 0) {
|
if (speed != 0) {
|
||||||
new_engine_speed = fabs (speed);
|
new_engine_speed = fabs (speed);
|
||||||
if (speed < 0) speed = -1;
|
_requested_transport_speed = speed;
|
||||||
|
if (speed < 0) speed = -1;
|
||||||
if (speed > 0) speed = 1;
|
if (speed > 0) speed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -425,6 +426,10 @@ Session::set_transport_speed (double speed, bool abort, bool clear_state, bool a
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* we are immediately honoring the speed request, there's nothing to keep track of. */
|
||||||
|
|
||||||
|
_requested_transport_speed = 0;
|
||||||
|
|
||||||
TFSM_STOP (abort, false);
|
TFSM_STOP (abort, false);
|
||||||
|
|
||||||
} else if (transport_stopped() && speed == 1.0) {
|
} else if (transport_stopped() && speed == 1.0) {
|
||||||
|
|
@ -457,6 +462,10 @@ Session::set_transport_speed (double speed, bool abort, bool clear_state, bool a
|
||||||
set_track_monitor_input_status (false);
|
set_track_monitor_input_status (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* we are immediately honoring the speed request, there's nothing to keep track of. */
|
||||||
|
|
||||||
|
_requested_transport_speed = 0;
|
||||||
|
|
||||||
TFSM_EVENT (TransportFSM::StartTransport);
|
TFSM_EVENT (TransportFSM::StartTransport);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -490,10 +499,6 @@ Session::set_transport_speed (double speed, bool abort, bool clear_state, bool a
|
||||||
|
|
||||||
clear_clicks ();
|
clear_clicks ();
|
||||||
|
|
||||||
/* if we are reversing relative to the current speed, or relative to the speed
|
|
||||||
before the last stop, then we have to do extra work.
|
|
||||||
*/
|
|
||||||
|
|
||||||
_transport_speed = speed;
|
_transport_speed = speed;
|
||||||
|
|
||||||
if (as_default) {
|
if (as_default) {
|
||||||
|
|
@ -585,8 +590,14 @@ Session::start_transport ()
|
||||||
maybe_allow_only_loop ();
|
maybe_allow_only_loop ();
|
||||||
maybe_allow_only_punch ();
|
maybe_allow_only_punch ();
|
||||||
|
|
||||||
_transport_speed = _default_transport_speed;
|
if (_requested_transport_speed) {
|
||||||
_engine_speed = _default_engine_speed;
|
_engine_speed = fabs (_requested_transport_speed);
|
||||||
|
_transport_speed = _requested_transport_speed > 0 ? 1 : -1;
|
||||||
|
_requested_transport_speed = 0;
|
||||||
|
} else {
|
||||||
|
_transport_speed = _default_transport_speed;
|
||||||
|
_engine_speed = _default_engine_speed;
|
||||||
|
}
|
||||||
|
|
||||||
if (!_engine.freewheeling()) {
|
if (!_engine.freewheeling()) {
|
||||||
Timecode::Time time;
|
Timecode::Time time;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue