From e9c1fe206d6eb2c7452d82cc633d359a8a0b73b8 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 28 Nov 2009 00:39:03 +0000 Subject: [PATCH] MMC related fixes git-svn-id: svn://localhost/ardour2/branches/3.0@6192 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/session_midi.cc | 4 ++-- libs/ardour/session_process.cc | 1 + libs/ardour/session_transport.cc | 4 +++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/libs/ardour/session_midi.cc b/libs/ardour/session_midi.cc index 1fe360e397..2e8915cdb5 100644 --- a/libs/ardour/session_midi.cc +++ b/libs/ardour/session_midi.cc @@ -494,7 +494,7 @@ Session::setup_midi_control () void Session::spp_start (Parser &, nframes_t /*timestamp*/) { - if (Config->get_mmc_control() && (config.get_external_sync() && config.get_sync_source() != MTC)) { + if (Config->get_mmc_control() && (!config.get_external_sync() || config.get_sync_source() != JACK)) { request_transport_speed (1.0); } } @@ -539,7 +539,7 @@ Session::midi_clock_stop (Parser& ignored, nframes_t timestamp) void Session::mmc_deferred_play (MIDI::MachineControl &/*mmc*/) { - if (Config->get_mmc_control() && (config.get_external_sync() && (config.get_sync_source() != MTC))) { + if (Config->get_mmc_control() && (!config.get_external_sync() || (config.get_sync_source() != JACK))) { request_transport_speed (1.0); } } diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index a79a2e4cd8..6182927404 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -311,6 +311,7 @@ Session::process_with_events (nframes_t nframes) */ if (_send_timecode_update) { send_full_time_code(nframes); + deliver_mmc (MIDI::MachineControl::cmdLocate, _transport_frame); } if (!process_can_proceed()) { diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index b7377d7dc6..0eaf8125a4 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -946,7 +946,9 @@ Session::set_transport_speed (double speed, bool abort, bool clear_state) } else { - if (!get_record_enabled() && Config->get_stop_at_session_end() && _transport_frame >= current_end_frame()) { + /* if not recording, don't roll forward past end if told to stop there */ + + if (!get_record_enabled() && (speed > 0.0 && Config->get_stop_at_session_end() && _transport_frame >= current_end_frame())) { return; }