diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/audioengine.cc | 15 | ||||
-rw-r--r-- | libs/ardour/session_process.cc | 3 |
2 files changed, 14 insertions, 4 deletions
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 3aa68478aa..5d29f35301 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -476,12 +476,21 @@ AudioEngine::process_callback (pframes_t nframes) next_processed_frames = _processed_frames + nframes; } - if (!tm.locked() || _session == 0) { + if (!tm.locked()) { /* return having done nothing */ _processed_frames = next_processed_frames; return 0; } + if (_session == 0) { + if (!_freewheeling) { + MIDI::Manager::instance()->cycle_start(nframes); + MIDI::Manager::instance()->cycle_end(); + } + _processed_frames = next_processed_frames; + return 0; + } + if (session_remove_pending) { /* perform the actual session removal */ _session = 0; @@ -518,9 +527,13 @@ AudioEngine::process_callback (pframes_t nframes) } } else { + MIDI::Manager::instance()->cycle_start(nframes); + if (_session) { _session->process (nframes); } + + MIDI::Manager::instance()->cycle_end(); } if (_freewheeling) { diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index be3f4f968b..c8f76f3d70 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -62,8 +62,6 @@ Session::process (pframes_t nframes) { framepos_t transport_at_start = _transport_frame; - MIDI::Manager::instance()->cycle_start(nframes); - _silent = false; if (processing_blocked()) { @@ -99,7 +97,6 @@ Session::process (pframes_t nframes) SendFeedback (); /* EMIT SIGNAL */ - MIDI::Manager::instance()->cycle_end(); } int |