Move panner bypass state up to the PannerShell so that it is preserved even when...
authorCarl Hetherington <carl@carlh.net>
Thu, 14 Jul 2011 22:17:43 +0000 (22:17 +0000)
committerCarl Hetherington <carl@carlh.net>
Thu, 14 Jul 2011 22:17:43 +0000 (22:17 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@9877 d708f5d6-7413-0410-9779-e7cbd77b26cf

16 files changed:
gtk2_ardour/panner2d.cc
gtk2_ardour/panner2d.h
gtk2_ardour/panner_ui.cc
gtk2_ardour/panner_ui.h
libs/ardour/ardour/panner.h
libs/ardour/ardour/panner_shell.h
libs/ardour/delivery.cc
libs/ardour/internal_send.cc
libs/ardour/panner.cc
libs/ardour/panner_shell.cc
libs/panners/1in2out/panner_1in2out.cc
libs/panners/1in2out/panner_1in2out.h
libs/panners/2in2out/panner_2in2out.cc
libs/panners/2in2out/panner_2in2out.h
libs/panners/vbap/vbap.cc
libs/panners/vbap/vbap.h

index bbceb9bc46279ec8939e85732ea22da9cc628ed7..d61471d19e1ccadbc7e4ae8184e50969ecc8ec21 100644 (file)
@@ -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<Panner> p, int32_t h)
-       : panner (p)
+Panner2d::Panner2d (boost::shared_ptr<PannerShell> 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<Speaker>& the_speakers (panner->get_speakers()->speakers());
+        vector<Speaker>& 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<Speaker>& the_speakers (panner->get_speakers()->speakers());
+        vector<Speaker>& 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<Panner> p, int32_t h, uint32_t inputs)
+Panner2dWindow::Panner2dWindow (boost::shared_ptr<PannerShell> 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);
         }
 }
 
index 6726d5f7cf04f93d38701c77edbc411794ae701b..eb938be8f0f1815fd6b25d90a7d0e7ce044cf9f1 100644 (file)
@@ -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<ARDOUR::Panner>, int32_t height);
+       Panner2d (boost::shared_ptr<ARDOUR::PannerShell>, 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<ARDOUR::Panner> get_panner() const { return panner; }
+       boost::shared_ptr<ARDOUR::PannerShell> get_panner_shell() const { return panner_shell; }
 
        sigc::signal<void,int> PuckMoved;
        sigc::signal<void,int> TargetMoved;
@@ -102,7 +102,7 @@ class Panner2d : public Gtk::DrawingArea
                bool _selected;
        };
 
-       boost::shared_ptr<ARDOUR::Panner> panner;
+       boost::shared_ptr<ARDOUR::PannerShell> panner_shell;
        Glib::RefPtr<Pango::Layout> layout;
 
        typedef std::vector<Target*> Targets;
@@ -146,7 +146,7 @@ class Panner2d : public Gtk::DrawingArea
 class Panner2dWindow : public ArdourDialog
 {
   public:
-       Panner2dWindow (boost::shared_ptr<ARDOUR::Panner>, int32_t height, uint32_t inputs);
+       Panner2dWindow (boost::shared_ptr<ARDOUR::PannerShell>, int32_t height, uint32_t inputs);
 
        void reset (uint32_t n_inputs);
 
index b10bb19c136831874be8e41cb650412d1a0e620d..71a982124226ffc778a63605dd7b8ddc5e3fc124 100644 (file)
@@ -119,7 +119,6 @@ PannerUI::set_panner (boost::shared_ptr<PannerShell> ps, boost::shared_ptr<Panne
        }
 
        _panshell->Changed.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
          */
@@ -216,12 +215,6 @@ PannerUI::panshell_changed ()
        setup_pan ();
 }
 
-void
-PannerUI::update_pan_state ()
-{
-       /* currently nothing to do */
-}
-
 void
 PannerUI::setup_pan ()
 {
@@ -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());
        }
 }
 
index 59474ef3cfdc35f2125a165ea3ed6d0bc7ba4db8..fb31607316efdd2b6d49006a97331c5ac081a196 100644 (file)
@@ -123,7 +123,6 @@ class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr
        std::vector<MonoPanner*> pan_bars;
 
        void pan_value_changed (uint32_t which);
-       void update_pan_state ();
        void build_astate_menu ();
        void build_astyle_menu ();
 
index ebb90ac50a0026220fef7828af484fbcd4edfe93..f770a181c13e0eff32f191d462f909d6f3a43008 100644 (file)
@@ -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,
index 4749cd4dcefe6f603ef647ec22db42c461de74e3..aad2836306e677a1b003d36c42024e7e4cde6dcd 100644 (file)
@@ -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;
 };
index 4a6b761f33d88612f2c4082b1b832b9d2a31b149..e7d435bacfd5470705bee37666707bfa4521d45e 100644 (file)
@@ -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;
index 3dbc27f45a7eb0394817b38da92bb3ed601ea9bc..171a5bb210ba15797aa25a329831b74203508765 100644 (file)
@@ -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);
        }
 }
 
index 05676c107dec0d0bfd82820276fda65ed3520bb2..a182f0b99c32ecfda119bcc3f0906f2a21087170 100644 (file)
@@ -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;
+}
index e60012d8b45e144eb4d5b1b25febde03c0c84472..c3ca2b4694ff2f3735257a0f6b3c0f19d62f2c0e 100644 (file)
@@ -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;
+}
index 6c002c159125ad454a93a6a651fad3a21167e722..19b8dadd6de75ecfd264dbf1c22ae75c0211e4d5 100644 (file)
@@ -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
index c36e3e87c7636cc096a4931460c5cb5edda33741..bd1b1a9c12125a2e2714a7efc4bd0255b89d8379 100644 (file)
@@ -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;
index 0c5184efe6351983ed95bd23f5a4b3803d643071..1ac3974c49ebd0e4b0e34fc553dd9e148f207060 100644 (file)
@@ -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
 {
index b9b9a73dfb45c29c4559e62a71dfe92acc3d49e3..48f441fbd031ba1b80723f181de5be777434198a 100644 (file)
@@ -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 ();
 
index 2f047b23427c321f85e7eeaa11e4407d32d0712d..d4a7030d9b3c7d129ea360035df551d8bf66c69a 100644 (file)
@@ -370,24 +370,12 @@ 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)
 {
index 61746002701ecfbe624ab82612bedbf564a0b0cf..752a0c9be664d3fd1733a21aef67e98980d77414 100644 (file)
@@ -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;