summaryrefslogtreecommitdiff
path: root/libs/ardour/panner_shell.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/panner_shell.cc')
-rw-r--r--libs/ardour/panner_shell.cc33
1 files changed, 25 insertions, 8 deletions
diff --git a/libs/ardour/panner_shell.cc b/libs/ardour/panner_shell.cc
index e60012d8b4..c3ca2b4694 100644
--- a/libs/ardour/panner_shell.cc
+++ b/libs/ardour/panner_shell.cc
@@ -66,6 +66,7 @@ using namespace PBD;
PannerShell::PannerShell (string name, Session& s, boost::shared_ptr<Pannable> p)
: SessionObject (s, name)
, _pannable (p)
+ , _bypassed (false)
{
set_name (name);
}
@@ -124,18 +125,14 @@ PannerShell::configure_io (ChanCount in, ChanCount out)
}
XMLNode&
-PannerShell::get_state (void)
-{
- return state (true);
-}
-
-XMLNode&
-PannerShell::state (bool full)
+PannerShell::get_state ()
{
XMLNode* node = new XMLNode ("PannerShell");
+ node->add_property (X_("bypassed"), _bypassed ? X_("yes") : X_("no"));
+
if (_panner) {
- node->add_child_nocopy (_panner->state (full));
+ node->add_child_nocopy (_panner->get_state ());
}
return *node;
@@ -149,6 +146,10 @@ PannerShell::set_state (const XMLNode& node, int version)
const XMLProperty *prop;
LocaleGuard lg (X_("POSIX"));
+ if ((prop = node.property (X_("bypassed"))) != 0) {
+ set_bypassed (string_is_affirmative (prop->value ()));
+ }
+
_panner.reset ();
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
@@ -326,3 +327,19 @@ PannerShell::run (BufferSet& inbufs, BufferSet& outbufs, framepos_t start_frame,
}
}
+void
+PannerShell::set_bypassed (bool yn)
+{
+ if (yn == _bypassed) {
+ return;
+ }
+
+ _bypassed = yn;
+ Changed (); /* EMIT SIGNAL */
+}
+
+bool
+PannerShell::bypassed () const
+{
+ return _bypassed;
+}