From efd10abdfb54bb1dd56de0aa01278805f5fbf332 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 18 Jan 2017 15:15:48 +0100 Subject: Implement record with preroll --- libs/ardour/session_transport.cc | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'libs/ardour/session_transport.cc') 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 @@ -161,6 +161,27 @@ Session::force_locate (framepos_t target_frame, bool with_roll) queue_event (ev); } +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) { @@ -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; -- cgit v1.2.3