diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/panner.h | 12 | ||||
-rw-r--r-- | libs/ardour/ardour/panner_shell.h | 10 | ||||
-rw-r--r-- | libs/ardour/delivery.cc | 10 | ||||
-rw-r--r-- | libs/ardour/internal_send.cc | 16 | ||||
-rw-r--r-- | libs/ardour/panner.cc | 34 | ||||
-rw-r--r-- | libs/ardour/panner_shell.cc | 33 | ||||
-rw-r--r-- | libs/panners/1in2out/panner_1in2out.cc | 15 | ||||
-rw-r--r-- | libs/panners/1in2out/panner_1in2out.h | 4 | ||||
-rw-r--r-- | libs/panners/2in2out/panner_2in2out.cc | 16 | ||||
-rw-r--r-- | libs/panners/2in2out/panner_2in2out.h | 4 | ||||
-rw-r--r-- | libs/panners/vbap/vbap.cc | 12 | ||||
-rw-r--r-- | libs/panners/vbap/vbap.h | 2 |
12 files changed, 48 insertions, 120 deletions
diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h index ebb90ac50a..f770a181c1 100644 --- a/libs/ardour/ardour/panner.h +++ b/libs/ardour/ardour/panner.h @@ -83,9 +83,6 @@ public: virtual void reset() {} - virtual bool bypassed() const { return _bypassed; } - virtual void set_bypassed (bool yn); - void set_automation_state (AutoState); AutoState automation_state() const; void set_automation_style (AutoStyle); @@ -140,11 +137,9 @@ public: framepos_t start, framepos_t end, pframes_t nframes, pan_t** buffers); - PBD::Signal0<void> StateChanged; - int set_state (const XMLNode&, int version); - virtual XMLNode& state (bool full_state) = 0; - + XMLNode& get_state (); + boost::shared_ptr<Pannable> pannable() const { return _pannable; } //virtual std::string describe_parameter (Evoral::Parameter); @@ -161,9 +156,6 @@ public: protected: boost::shared_ptr<Pannable> _pannable; - bool _bypassed; - - XMLNode& get_state (); virtual void distribute_one (AudioBuffer&, BufferSet& obufs, gain_t gain_coeff, pframes_t nframes, uint32_t which) = 0; virtual void distribute_one_automated (AudioBuffer&, BufferSet& obufs, diff --git a/libs/ardour/ardour/panner_shell.h b/libs/ardour/ardour/panner_shell.h index 4749cd4dce..aad2836306 100644 --- a/libs/ardour/ardour/panner_shell.h +++ b/libs/ardour/ardour/panner_shell.h @@ -60,20 +60,22 @@ public: /// The fundamental Panner function void run (BufferSet& src, BufferSet& dest, framepos_t start_frame, framepos_t end_frames, pframes_t nframes); - - XMLNode& get_state (void); - XMLNode& state (bool full); + XMLNode& get_state (); int set_state (const XMLNode&, int version); - PBD::Signal0<void> Changed; /* panner and/or outputs count changed */ + PBD::Signal0<void> Changed; /* panner and/or outputs count and/or bypass state changed */ boost::shared_ptr<Panner> panner() const { return _panner; } boost::shared_ptr<Pannable> pannable() const { return _pannable; } + bool bypassed () const; + void set_bypassed (bool); + private: void distribute_no_automation (BufferSet& src, BufferSet& dest, pframes_t nframes, gain_t gain_coeff); boost::shared_ptr<Panner> _panner; boost::shared_ptr<Pannable> _pannable; + bool _bypassed; static float current_automation_version_number; }; diff --git a/libs/ardour/delivery.cc b/libs/ardour/delivery.cc index 4a6b761f33..e7d435bacf 100644 --- a/libs/ardour/delivery.cc +++ b/libs/ardour/delivery.cc @@ -233,8 +233,6 @@ Delivery::configure_io (ChanCount in, ChanCount out) void Delivery::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, pframes_t nframes, bool result_required) { - boost::shared_ptr<Panner> panner; - assert (_output); PortSet& ports (_output->ports()); @@ -287,10 +285,6 @@ Delivery::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, pf Amp::apply_simple_gain (bufs, nframes, tgain); } - if (_panshell) { - panner = _panshell->panner(); - } - #if 0 if (_session.transport_rolling()) { cerr << name() << " first value written : " << scnt << endl; @@ -306,7 +300,7 @@ Delivery::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, pf } #endif - if (panner && !panner->bypassed()) { + if (_panshell && !_panshell->bypassed()) { // Use the panner to distribute audio to output port buffers @@ -350,7 +344,7 @@ Delivery::state (bool full_state) node.add_property("role", enum_2_string(_role)); if (_panshell) { - node.add_child_nocopy (_panshell->state (full_state)); + node.add_child_nocopy (_panshell->get_state ()); } return node; diff --git a/libs/ardour/internal_send.cc b/libs/ardour/internal_send.cc index 3dbc27f45a..171a5bb210 100644 --- a/libs/ardour/internal_send.cc +++ b/libs/ardour/internal_send.cc @@ -109,13 +109,7 @@ InternalSend::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame assert(mixbufs.available() >= bufs.count()); - boost::shared_ptr<Panner> panner; - - if (_panshell) { - panner = _panshell->panner(); - } - - if (panner && !panner->bypassed()) { + if (_panshell && !_panshell->bypassed()) { mixbufs.set_count (_send_to->n_outputs ()); _panshell->run (bufs, mixbufs, start_frame, end_frame, nframes); } else { @@ -320,14 +314,8 @@ InternalSend::send_to_property_changed (const PropertyChange& what_changed) void InternalSend::set_can_pan (bool yn) { - boost::shared_ptr<Panner> panner; - if (_panshell) { - panner = _panshell->panner (); - } - - if (panner) { - panner->set_bypassed (!yn); + _panshell->set_bypassed (!yn); } } diff --git a/libs/ardour/panner.cc b/libs/ardour/panner.cc index 05676c107d..a182f0b99c 100644 --- a/libs/ardour/panner.cc +++ b/libs/ardour/panner.cc @@ -32,7 +32,6 @@ using namespace ARDOUR; Panner::Panner (boost::shared_ptr<Pannable> p) : _pannable (p) - , _bypassed (false) { } @@ -41,35 +40,10 @@ Panner::~Panner () DEBUG_TRACE(PBD::DEBUG::Destruction, string_compose ("panner @ %1 destructor, pannable is %2\n", this, _pannable)); } -void -Panner::set_bypassed (bool yn) -{ - if (yn != _bypassed) { - _bypassed = yn; - StateChanged (); - } -} - -int -Panner::set_state (const XMLNode& node, int version) -{ - const XMLProperty* prop; - - if ((prop = node.property (X_("bypassed"))) != 0) { - set_bypassed (string_is_affirmative (prop->value())); - } - - return 0; -} - XMLNode& Panner::get_state () { - XMLNode* node = new XMLNode (X_("Panner")); - - node->add_property (X_("bypassed"), (bypassed() ? "yes" : "no")); - - return *node; + return *(new XMLNode (X_("Panner"))); } void @@ -140,3 +114,9 @@ Panner::value_as_string (boost::shared_ptr<AutomationControl> ac) const { return _pannable->value_as_string (ac); } + +int +Panner::set_state (XMLNode const &, int) +{ + return 0; +} 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; +} diff --git a/libs/panners/1in2out/panner_1in2out.cc b/libs/panners/1in2out/panner_1in2out.cc index 6c002c1591..19b8dadd6d 100644 --- a/libs/panners/1in2out/panner_1in2out.cc +++ b/libs/panners/1in2out/panner_1in2out.cc @@ -323,26 +323,13 @@ Panner1in2out::factory (boost::shared_ptr<Pannable> p, boost::shared_ptr<Speaker } XMLNode& -Panner1in2out::get_state (void) -{ - return state (true); -} - -XMLNode& -Panner1in2out::state (bool /*full_state*/) +Panner1in2out::get_state () { XMLNode& root (Panner::get_state ()); root.add_property (X_("type"), _descriptor.name); return root; } -int -Panner1in2out::set_state (const XMLNode& node, int version) -{ - LocaleGuard lg (X_("POSIX")); - Panner::set_state (node, version); - return 0; -} std::set<Evoral::Parameter> Panner1in2out::what_can_be_automated() const diff --git a/libs/panners/1in2out/panner_1in2out.h b/libs/panners/1in2out/panner_1in2out.h index c36e3e87c7..bd1b1a9c12 100644 --- a/libs/panners/1in2out/panner_1in2out.h +++ b/libs/panners/1in2out/panner_1in2out.h @@ -56,9 +56,7 @@ class Panner1in2out : public Panner std::string describe_parameter (Evoral::Parameter); std::string value_as_string (boost::shared_ptr<AutomationControl>) const; - XMLNode& state (bool full_state); - XMLNode& get_state (void); - int set_state (const XMLNode&, int version); + XMLNode& get_state (); protected: float left; diff --git a/libs/panners/2in2out/panner_2in2out.cc b/libs/panners/2in2out/panner_2in2out.cc index 0c5184efe6..1ac3974c49 100644 --- a/libs/panners/2in2out/panner_2in2out.cc +++ b/libs/panners/2in2out/panner_2in2out.cc @@ -435,27 +435,13 @@ Panner2in2out::factory (boost::shared_ptr<Pannable> p, boost::shared_ptr<Speaker } XMLNode& -Panner2in2out::get_state (void) -{ - return state (true); -} - -XMLNode& -Panner2in2out::state (bool /*full_state*/) +Panner2in2out::get_state () { XMLNode& root (Panner::get_state ()); root.add_property (X_("type"), _descriptor.name); return root; } -int -Panner2in2out::set_state (const XMLNode& node, int version) -{ - LocaleGuard lg (X_("POSIX")); - Panner::set_state (node, version); - return 0; -} - std::set<Evoral::Parameter> Panner2in2out::what_can_be_automated() const { diff --git a/libs/panners/2in2out/panner_2in2out.h b/libs/panners/2in2out/panner_2in2out.h index b9b9a73dfb..48f441fbd0 100644 --- a/libs/panners/2in2out/panner_2in2out.h +++ b/libs/panners/2in2out/panner_2in2out.h @@ -62,9 +62,7 @@ class Panner2in2out : public Panner std::string describe_parameter (Evoral::Parameter); std::string value_as_string (boost::shared_ptr<AutomationControl>) const; - XMLNode& state (bool full_state); - XMLNode& get_state (void); - int set_state (const XMLNode&, int version); + XMLNode& get_state (); void update (); diff --git a/libs/panners/vbap/vbap.cc b/libs/panners/vbap/vbap.cc index 2f047b2342..d4a7030d9b 100644 --- a/libs/panners/vbap/vbap.cc +++ b/libs/panners/vbap/vbap.cc @@ -371,23 +371,11 @@ VBAPanner::distribute_one_automated (AudioBuffer& src, BufferSet& obufs, XMLNode& VBAPanner::get_state () { - return state (true); -} - -XMLNode& -VBAPanner::state (bool full_state) -{ XMLNode& node (Panner::get_state()); node.add_property (X_("type"), _descriptor.name); return node; } -int -VBAPanner::set_state (const XMLNode& node, int /*version*/) -{ - return 0; -} - Panner* VBAPanner::factory (boost::shared_ptr<Pannable> p, boost::shared_ptr<Speakers> s) { diff --git a/libs/panners/vbap/vbap.h b/libs/panners/vbap/vbap.h index 6174600270..752a0c9be6 100644 --- a/libs/panners/vbap/vbap.h +++ b/libs/panners/vbap/vbap.h @@ -58,9 +58,7 @@ public: std::string describe_parameter (Evoral::Parameter); std::string value_as_string (boost::shared_ptr<AutomationControl>) const; - XMLNode& state (bool full_state); XMLNode& get_state (); - int set_state (const XMLNode&, int version); PBD::AngularVector signal_position (uint32_t n) const; boost::shared_ptr<Speakers> get_speakers() const; |