diff options
author | Robin Gareus <robin@gareus.org> | 2014-01-13 15:13:37 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-01-13 15:13:37 +0100 |
commit | 291618fe7116424448da5f7029e567d655526521 (patch) | |
tree | e8399ce25f46634a7a75670e8c97ac3747f99002 /libs/ardour/panner_shell.cc | |
parent | 9c595f8131967541808ae77bae842bd905db9caa (diff) |
allow to custom select panner-type for each delivery.
Diffstat (limited to 'libs/ardour/panner_shell.cc')
-rw-r--r-- | libs/ardour/panner_shell.cc | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libs/ardour/panner_shell.cc b/libs/ardour/panner_shell.cc index a25cb49ab5..ccb8aa8e87 100644 --- a/libs/ardour/panner_shell.cc +++ b/libs/ardour/panner_shell.cc @@ -43,8 +43,10 @@ #include "evoral/Curve.hpp" #include "ardour/audio_buffer.h" +#include "ardour/audioengine.h" #include "ardour/buffer_set.h" #include "ardour/debug.h" +#include "ardour/pannable.h" #include "ardour/panner.h" #include "ardour/panner_manager.h" #include "ardour/panner_shell.h" @@ -393,3 +395,21 @@ PannerShell::set_user_selected_panner_uri (std::string const uri) _force_reselect = true; return true; } + +bool +PannerShell::select_panner_by_uri (std::string const uri) +{ + if (uri == _user_selected_panner_uri) return false; + _user_selected_panner_uri = uri; + if (uri == _current_panner_uri) return false; + _force_reselect = true; + if (_panner) { + Glib::Threads::Mutex::Lock lx (AudioEngine::instance()->process_lock ()); + ChanCount in = _panner->in(); + ChanCount out = _panner->out(); + configure_io(in, out); + pannable()->set_panner(_panner); + _session.set_dirty (); + } + return true; +} |