From 13b23ec25c55ed6a2ec640bcf1a3a1651f6e21b1 Mon Sep 17 00:00:00 2001 From: carlh Date: Thu, 14 Jul 2011 22:17:43 +0000 Subject: [PATCH] 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: http://subversion.ardour.org/svn/ardour2/ardour2/branches/3.0@9877 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/panner2d.cc | 53 +++++++++++++++++----------------- gtk2_ardour/panner2d.h | 10 +++---- gtk2_ardour/panner_ui.cc | 17 ++++------- gtk2_ardour/panner_ui.h | 1 - libs/ardour/ardour/panner.h | 12 ++------ libs/ardour/ardour/panner_shell.h | 10 ++++--- libs/ardour/delivery.cc | 10 ++----- libs/ardour/internal_send.cc | 16 ++-------- libs/ardour/panner.cc | 34 +++++----------------- libs/ardour/panner_shell.cc | 33 ++++++++++++++++----- libs/panners/1in2out/panner_1in2out.cc | 15 +--------- libs/panners/1in2out/panner_1in2out.h | 4 +-- libs/panners/2in2out/panner_2in2out.cc | 16 +--------- libs/panners/2in2out/panner_2in2out.h | 4 +-- libs/panners/vbap/vbap.cc | 12 -------- libs/panners/vbap/vbap.h | 2 -- 16 files changed, 85 insertions(+), 164 deletions(-) diff --git a/gtk2_ardour/panner2d.cc b/gtk2_ardour/panner2d.cc index bbceb9bc4..d61471d19 100644 --- a/gtk2_ardour/panner2d.cc +++ b/gtk2_ardour/panner2d.cc @@ -29,6 +29,7 @@ #include "pbd/error.h" #include "pbd/cartesian.h" #include "ardour/panner.h" +#include "ardour/panner_shell.h" #include "ardour/pannable.h" #include "ardour/speakers.h" @@ -67,17 +68,17 @@ Panner2d::Target::set_text (const char* txt) text = txt; } -Panner2d::Panner2d (boost::shared_ptr p, int32_t h) - : panner (p) +Panner2d::Panner2d (boost::shared_ptr p, int32_t h) + : panner_shell (p) , position (AngularVector (0.0, 0.0), "") , width (0) , height (h) , last_width (0) { - panner->StateChanged.connect (connections, invalidator (*this), boost::bind (&Panner2d::handle_state_change, this), gui_context()); + panner_shell->Changed.connect (connections, invalidator (*this), boost::bind (&Panner2d::handle_state_change, this), gui_context()); - panner->pannable()->pan_azimuth_control->Changed.connect (connections, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context()); - panner->pannable()->pan_width_control->Changed.connect (connections, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context()); + panner_shell->pannable()->pan_azimuth_control->Changed.connect (connections, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context()); + panner_shell->pannable()->pan_width_control->Changed.connect (connections, invalidator(*this), boost::bind (&Panner2d::handle_position_change, this), gui_context()); drag_target = 0; set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK); @@ -95,7 +96,7 @@ Panner2d::~Panner2d() void Panner2d::reset (uint32_t n_inputs) { - uint32_t nouts = panner->out().n_audio(); + uint32_t nouts = panner_shell->panner()->out().n_audio(); /* signals */ @@ -114,7 +115,7 @@ Panner2d::reset (uint32_t n_inputs) label_signals (); for (uint32_t i = 0; i < n_inputs; ++i) { - signals[i]->position = panner->signal_position (i); + signals[i]->position = panner_shell->panner()->signal_position (i); } /* add all outputs */ @@ -135,7 +136,7 @@ Panner2d::reset (uint32_t n_inputs) (*x)->visible = false; } - vector& the_speakers (panner->get_speakers()->speakers()); + vector& the_speakers (panner_shell->panner()->get_speakers()->speakers()); for (uint32_t n = 0; n < nouts; ++n) { char buf[16]; @@ -204,7 +205,7 @@ Panner2d::handle_state_change () void Panner2d::label_signals () { - double w = panner->pannable()->pan_width_control->get_value(); + double w = panner_shell->pannable()->pan_width_control->get_value(); uint32_t sz = signals.size(); switch (sz) { @@ -243,12 +244,12 @@ void Panner2d::handle_position_change () { uint32_t n; - double w = panner->pannable()->pan_width_control->get_value(); + double w = panner_shell->pannable()->pan_width_control->get_value(); - position.position = AngularVector (panner->pannable()->pan_azimuth_control->get_value() * 360.0, 0.0); + position.position = AngularVector (panner_shell->pannable()->pan_azimuth_control->get_value() * 360.0, 0.0); for (uint32_t i = 0; i < signals.size(); ++i) { - signals[i]->position = panner->signal_position (i); + signals[i]->position = panner_shell->panner()->signal_position (i); } if (w * last_width <= 0) { @@ -258,7 +259,7 @@ Panner2d::handle_position_change () last_width = w; - vector& the_speakers (panner->get_speakers()->speakers()); + vector& the_speakers (panner_shell->panner()->get_speakers()->speakers()); for (n = 0; n < speakers.size(); ++n) { speakers[n]->position = the_speakers[n].angles(); @@ -397,7 +398,7 @@ Panner2d::on_expose_event (GdkEventExpose *event) /* background */ cairo_rectangle (cr, event->area.x, event->area.y, event->area.width, event->area.height); - if (!panner->bypassed()) { + if (!panner_shell->bypassed()) { cairo_set_source_rgba (cr, 0.1, 0.1, 0.1, 1.0); } else { cairo_set_source_rgba (cr, 0.1, 0.1, 0.1, 0.2); @@ -446,8 +447,8 @@ Panner2d::on_expose_event (GdkEventExpose *event) if (signals.size() > 1) { /* arc to show "diffusion" */ - double width_angle = fabs (panner->pannable()->pan_width_control->get_value()) * 2 * M_PI; - double position_angle = (2 * M_PI) - panner->pannable()->pan_azimuth_control->get_value() * 2 * M_PI; + double width_angle = fabs (panner_shell->pannable()->pan_width_control->get_value()) * 2 * M_PI; + double position_angle = (2 * M_PI) - panner_shell->pannable()->pan_azimuth_control->get_value() * 2 * M_PI; cairo_save (cr); cairo_translate (cr, radius, radius); @@ -455,7 +456,7 @@ Panner2d::on_expose_event (GdkEventExpose *event) cairo_move_to (cr, 0, 0); cairo_arc_negative (cr, 0, 0, radius, width_angle, 0.0); cairo_close_path (cr); - if (panner->pannable()->pan_width_control->get_value() >= 0.0) { + if (panner_shell->pannable()->pan_width_control->get_value() >= 0.0) { /* normal width */ cairo_set_source_rgba (cr, 0.282, 0.517, 0.662, 0.45); } else { @@ -466,7 +467,7 @@ Panner2d::on_expose_event (GdkEventExpose *event) cairo_restore (cr); } - if (!panner->bypassed()) { + if (!panner_shell->bypassed()) { double arc_radius; @@ -607,7 +608,7 @@ Panner2d::on_button_press_event (GdkEventButton *ev) if ((drag_target = find_closest_object (x, y, is_signal)) != 0) { if (!is_signal) { - panner->set_position (drag_target->position.azi/360.0); + panner_shell->panner()->set_position (drag_target->position.azi/360.0); drag_target = 0; } else { drag_target->set_selected (true); @@ -705,7 +706,7 @@ Panner2d::handle_motion (gint evx, gint evy, GdkModifierType state) if (drag_target == &position) { double degree_fract = av.azi / 360.0; - panner->set_position (degree_fract); + panner_shell->panner()->set_position (degree_fract); } } } @@ -719,12 +720,12 @@ Panner2d::on_scroll_event (GdkEventScroll* ev) switch (ev->direction) { case GDK_SCROLL_UP: case GDK_SCROLL_RIGHT: - panner->set_position (panner->pannable()->pan_azimuth_control->get_value() - 1.0/360.0); + panner_shell->panner()->set_position (panner_shell->pannable()->pan_azimuth_control->get_value() - 1.0/360.0); break; case GDK_SCROLL_DOWN: case GDK_SCROLL_LEFT: - panner->set_position (panner->pannable()->pan_azimuth_control->get_value() + 1.0/360.0); + panner_shell->panner()->set_position (panner_shell->pannable()->pan_azimuth_control->get_value() + 1.0/360.0); break; } return true; @@ -773,10 +774,10 @@ Panner2d::clamp_to_circle (double& x, double& y) void Panner2d::toggle_bypass () { - panner->set_bypassed (!panner->bypassed()); + panner_shell->set_bypassed (!panner_shell->bypassed()); } -Panner2dWindow::Panner2dWindow (boost::shared_ptr p, int32_t h, uint32_t inputs) +Panner2dWindow::Panner2dWindow (boost::shared_ptr p, int32_t h, uint32_t inputs) : ArdourDialog (_("Panner (2D)")) , widget (p, h) , bypass_button (_("Bypass")) @@ -838,10 +839,10 @@ void Panner2dWindow::bypass_toggled () { bool view = bypass_button.get_active (); - bool model = widget.get_panner()->bypassed (); + bool model = widget.get_panner_shell()->bypassed (); if (model != view) { - widget.get_panner()->set_bypassed (view); + widget.get_panner_shell()->set_bypassed (view); } } diff --git a/gtk2_ardour/panner2d.h b/gtk2_ardour/panner2d.h index 6726d5f7c..eb938be8f 100644 --- a/gtk2_ardour/panner2d.h +++ b/gtk2_ardour/panner2d.h @@ -37,7 +37,7 @@ #include "ardour_dialog.h" namespace ARDOUR { - class Panner; + class PannerShell; } namespace Gtk { @@ -54,7 +54,7 @@ class Panner2dWindow; class Panner2d : public Gtk::DrawingArea { public: - Panner2d (boost::shared_ptr, int32_t height); + Panner2d (boost::shared_ptr, int32_t height); ~Panner2d (); void allow_target_motion (bool); @@ -64,7 +64,7 @@ class Panner2d : public Gtk::DrawingArea void move_signal (int which, const PBD::AngularVector&); void reset (uint32_t n_inputs); - boost::shared_ptr get_panner() const { return panner; } + boost::shared_ptr get_panner_shell() const { return panner_shell; } sigc::signal PuckMoved; sigc::signal TargetMoved; @@ -102,7 +102,7 @@ class Panner2d : public Gtk::DrawingArea bool _selected; }; - boost::shared_ptr panner; + boost::shared_ptr panner_shell; Glib::RefPtr layout; typedef std::vector Targets; @@ -146,7 +146,7 @@ class Panner2d : public Gtk::DrawingArea class Panner2dWindow : public ArdourDialog { public: - Panner2dWindow (boost::shared_ptr, int32_t height, uint32_t inputs); + Panner2dWindow (boost::shared_ptr, int32_t height, uint32_t inputs); void reset (uint32_t n_inputs); diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc index b10bb19c1..71a982124 100644 --- a/gtk2_ardour/panner_ui.cc +++ b/gtk2_ardour/panner_ui.cc @@ -119,7 +119,6 @@ PannerUI::set_panner (boost::shared_ptr ps, boost::shared_ptrChanged.connect (connections, invalidator (*this), boost::bind (&PannerUI::panshell_changed, this), gui_context()); - _panner->StateChanged.connect (connections, invalidator (*this), boost::bind (&PannerUI::update_pan_state, this), gui_context()); /* new panner object, force complete reset of panner GUI */ @@ -217,12 +216,6 @@ PannerUI::panshell_changed () } void -PannerUI::update_pan_state () -{ - /* currently nothing to do */ -} - -void PannerUI::setup_pan () { if (!_panner) { @@ -313,7 +306,7 @@ PannerUI::setup_pan () } else { if (!twod_panner) { - twod_panner = new Panner2d (_panner, 61); + twod_panner = new Panner2d (_panshell, 61); twod_panner->set_name ("MixerPanZone"); twod_panner->show (); twod_panner->signal_button_press_event().connect (sigc::mem_fun(*this, &PannerUI::pan_button_event), false); @@ -361,7 +354,7 @@ PannerUI::pan_button_event (GdkEventButton* ev) case 1: if (twod_panner && ev->type == GDK_2BUTTON_PRESS) { if (!big_window) { - big_window = new Panner2dWindow (_panner, 400, _panner->in().n_audio()); + big_window = new Panner2dWindow (_panshell, 400, _panner->in().n_audio()); } big_window->show (); return true; @@ -397,7 +390,7 @@ PannerUI::build_pan_menu () /* set state first, connect second */ - bypass_menu_item->set_active (_panner->bypassed()); + bypass_menu_item->set_active (_panshell->bypassed()); bypass_menu_item->signal_toggled().connect (sigc::mem_fun(*this, &PannerUI::pan_bypass_toggle)); items.push_back (MenuElem (_("Reset"), sigc::mem_fun (*this, &PannerUI::pan_reset))); @@ -406,8 +399,8 @@ PannerUI::build_pan_menu () void PannerUI::pan_bypass_toggle () { - if (bypass_menu_item && (_panner->bypassed() != bypass_menu_item->get_active())) { - _panner->set_bypassed (!_panner->bypassed()); + if (bypass_menu_item && (_panshell->bypassed() != bypass_menu_item->get_active())) { + _panshell->set_bypassed (!_panshell->bypassed()); } } diff --git a/gtk2_ardour/panner_ui.h b/gtk2_ardour/panner_ui.h index 59474ef3c..fb3160731 100644 --- a/gtk2_ardour/panner_ui.h +++ b/gtk2_ardour/panner_ui.h @@ -123,7 +123,6 @@ class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr std::vector pan_bars; void pan_value_changed (uint32_t which); - void update_pan_state (); void build_astate_menu (); void build_astyle_menu (); diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h index ebb90ac50..f770a181c 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 StateChanged; - int set_state (const XMLNode&, int version); - virtual XMLNode& state (bool full_state) = 0; - + XMLNode& get_state (); + boost::shared_ptr pannable() const { return _pannable; } //virtual std::string describe_parameter (Evoral::Parameter); @@ -161,9 +156,6 @@ public: protected: boost::shared_ptr _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 4749cd4dc..aad283630 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 Changed; /* panner and/or outputs count changed */ + PBD::Signal0 Changed; /* panner and/or outputs count and/or bypass state changed */ boost::shared_ptr panner() const { return _panner; } boost::shared_ptr 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; boost::shared_ptr _pannable; + bool _bypassed; static float current_automation_version_number; }; diff --git a/libs/ardour/delivery.cc b/libs/ardour/delivery.cc index 4a6b761f3..e7d435bac 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; - 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 3dbc27f45..171a5bb21 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; - - 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; - 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 05676c107..a182f0b99 100644 --- a/libs/ardour/panner.cc +++ b/libs/ardour/panner.cc @@ -32,7 +32,6 @@ using namespace ARDOUR; Panner::Panner (boost::shared_ptr 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 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 e60012d8b..c3ca2b469 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; +} diff --git a/libs/panners/1in2out/panner_1in2out.cc b/libs/panners/1in2out/panner_1in2out.cc index 6c002c159..19b8dadd6 100644 --- a/libs/panners/1in2out/panner_1in2out.cc +++ b/libs/panners/1in2out/panner_1in2out.cc @@ -323,26 +323,13 @@ Panner1in2out::factory (boost::shared_ptr p, boost::shared_ptr Panner1in2out::what_can_be_automated() const diff --git a/libs/panners/1in2out/panner_1in2out.h b/libs/panners/1in2out/panner_1in2out.h index c36e3e87c..bd1b1a9c1 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) 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 0c5184efe..1ac3974c4 100644 --- a/libs/panners/2in2out/panner_2in2out.cc +++ b/libs/panners/2in2out/panner_2in2out.cc @@ -435,27 +435,13 @@ Panner2in2out::factory (boost::shared_ptr p, boost::shared_ptr Panner2in2out::what_can_be_automated() const { diff --git a/libs/panners/2in2out/panner_2in2out.h b/libs/panners/2in2out/panner_2in2out.h index b9b9a73df..48f441fbd 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) 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 2f047b234..d4a7030d9 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 p, boost::shared_ptr s) { diff --git a/libs/panners/vbap/vbap.h b/libs/panners/vbap/vbap.h index 617460027..752a0c9be 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) 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 get_speakers() const; -- 2.11.4.GIT