summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/audioengine.cc15
-rw-r--r--libs/ardour/session_process.cc3
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