diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-06 10:38:49 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-06 10:38:49 -0400 |
commit | 018465f7398f956b9188f6c3a45b9b5d31f34242 (patch) | |
tree | 6cd4f0fbcf947f75d845a6bbe443ee9090555a36 /libs/ardour/async_midi_port.cc | |
parent | 94efddd240f0cef752bfba5e1ccb06eb952221d1 (diff) |
exit early from AsyncMIDIPort::drain() if it will never be used in a process callback again
Diffstat (limited to 'libs/ardour/async_midi_port.cc')
-rw-r--r-- | libs/ardour/async_midi_port.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/libs/ardour/async_midi_port.cc b/libs/ardour/async_midi_port.cc index 22b5438fe0..5bc8e22833 100644 --- a/libs/ardour/async_midi_port.cc +++ b/libs/ardour/async_midi_port.cc @@ -145,6 +145,12 @@ AsyncMIDIPort::drain (int check_interval_usecs) { RingBuffer< Evoral::Event<double> >::rw_vector vec = { { 0, 0 }, { 0, 0} }; + if (!AudioEngine::instance()->running() || AudioEngine::instance()->session() == 0) { + /* no more process calls - it will never drain */ + return; + } + + if (is_process_thread()) { error << "Process thread called MIDI::AsyncMIDIPort::drain() - this cannot work" << endmsg; return; |