diff options
Diffstat (limited to 'libs/ardour/audioengine.cc')
-rw-r--r-- | libs/ardour/audioengine.cc | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index abf4999e7f..9cec374716 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -84,6 +84,7 @@ AudioEngine::AudioEngine (string client_name, string session_uuid) _frame_rate = 0; _buffer_size = 0; _freewheeling = false; + _pre_freewheel_mmc_enabled = false; _main_thread = 0; port_remove_in_progress = false; @@ -344,7 +345,20 @@ AudioEngine::_process_thread (void *arg) void AudioEngine::_freewheel_callback (int onoff, void *arg) { - static_cast<AudioEngine*>(arg)->_freewheeling = onoff; + static_cast<AudioEngine*>(arg)->freewheel_callback (onoff); +} + +void +AudioEngine::freewheel_callback (int onoff) +{ + _freewheeling = onoff; + + if (onoff) { + _pre_freewheel_mmc_enabled = MIDI::Manager::instance()->mmc()->send_enabled (); + MIDI::Manager::instance()->mmc()->enable_send (false); + } else { + MIDI::Manager::instance()->mmc()->enable_send (_pre_freewheel_mmc_enabled); + } } void |