From c9f09a10c4ed825c50e636b66844048e4f50e88e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 23 Apr 2012 16:24:41 +0000 Subject: [PATCH] move MIDI::Manager::cycle_{start,end}() calls from Session into AudioEngine so that they will continue even if the session has been disconnected from the session git-svn-id: svn://localhost/ardour2/branches/3.0@12066 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/audioengine.cc | 15 ++++++++++++++- 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