void
Session::enable_record ()
{
+ if (_transport_speed < 0.0) {
+ /* no recording in reverse */
+ return;
+ }
+
while (1) {
RecordState rs = (RecordState) g_atomic_int_get (&_record_status);
if (rs == Recording) {
break;
}
-
+
if (g_atomic_int_compare_and_exchange (&_record_status, rs, Recording)) {
_last_record_location = _transport_frame;
return;
}
+ if (actively_recording() && speed < 0.0) {
+ /* no reverse during recording */
+ return;
+ }
+
_target_transport_speed = fabs(speed);
/* 8.0 max speed is somewhat arbitrary but based on guestimates regarding disk i/o capability