From 48de21b1201fdf828c32ab396ac75dc884a96d90 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 14 Jul 2011 22:17:43 +0000 Subject: Move panner bypass state up to the PannerShell so that it is preserved even when new Panners are dropped in (refixes #4185). git-svn-id: svn://localhost/ardour2/branches/3.0@9877 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/panner_shell.cc | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'libs/ardour/panner_shell.cc') 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 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; +} -- cgit v1.2.3