summaryrefslogtreecommitdiff
path: root/libs/ardour/panner_shell.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-01-13 15:13:37 +0100
committerRobin Gareus <robin@gareus.org>2014-01-13 15:13:37 +0100
commit291618fe7116424448da5f7029e567d655526521 (patch)
treee8399ce25f46634a7a75670e8c97ac3747f99002 /libs/ardour/panner_shell.cc
parent9c595f8131967541808ae77bae842bd905db9caa (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.cc20
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;
+}