diff options
author | Robin Gareus <robin@gareus.org> | 2016-09-30 16:47:57 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-09-30 16:50:00 +0200 |
commit | 3d256ff2c250f8d74ee13547691725f42121306e (patch) | |
tree | bf20266b43517643bfab6ccf1f50e99adf3226f3 /gtk2_ardour/engine_dialog.cc | |
parent | 7f8ec25e259d9f93eb4f1b4e6c8fa81414619890 (diff) |
Constrain Samplerate selection when session is loaded
Ardour does not allow to change the rate of a session itself.
Diffstat (limited to 'gtk2_ardour/engine_dialog.cc')
-rw-r--r-- | gtk2_ardour/engine_dialog.cc | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index ffbf787b6a..8a6c42fd8c 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -852,11 +852,17 @@ EngineControl::update_sensitivity () } if (get_popdown_string_count (sample_rate_combo) > 0) { + bool allow_to_set_rate = false; if (!ARDOUR::AudioEngine::instance()->running()) { - sample_rate_combo.set_sensitive (true); - } else { - sample_rate_combo.set_sensitive (false); + if (!ARDOUR_UI::instance()->session_loaded) { + // engine is not running, no session loaded -> anything goes. + allow_to_set_rate = true; + } else if (_desired_sample_rate > 0 && get_rate () != _desired_sample_rate) { + // only allow to change if the current setting is not the native session rate. + allow_to_set_rate = true; + } } + sample_rate_combo.set_sensitive (allow_to_set_rate); } else { sample_rate_combo.set_sensitive (false); valid = false; |