diff options
author | Robin Gareus <robin@gareus.org> | 2017-01-18 15:15:48 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-01-18 15:15:48 +0100 |
commit | efd10abdfb54bb1dd56de0aa01278805f5fbf332 (patch) | |
tree | d25ed31bdd75b77842af782b6e97738e663ca264 /libs/ardour/session_transport.cc | |
parent | cf31233cd1503f7f3818c6bbeb6f5bd427144f80 (diff) |
Implement record with preroll
Diffstat (limited to 'libs/ardour/session_transport.cc')
-rw-r--r-- | libs/ardour/session_transport.cc | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index a6d25f05ab..8a57456dde 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -162,6 +162,27 @@ Session::force_locate (framepos_t target_frame, bool with_roll) } void +Session::unset_preroll_record () +{ + if (_preroll_record_in >= 0) { + remove_event (_preroll_record_in, SessionEvent::RecordStart); + } + _preroll_record_in = -1; +} + +void +Session::request_preroll_record (framepos_t rec_in) +{ + unset_preroll_record (); + _preroll_record_in = rec_in; + if (_preroll_record_in >= 0) { + replace_event (SessionEvent::RecordStart, _preroll_record_in); + config.set_punch_in (false); + config.set_punch_out (false); + } +} + +void Session::request_play_loop (bool yn, bool change_transport_roll) { if (_slave && yn) { @@ -1583,7 +1604,7 @@ Session::start_transport () switch (record_status()) { case Enabled: - if (!config.get_punch_in()) { + if (!config.get_punch_in() && !preroll_record_enabled()) { enable_record (); } break; |