position+width panning improvements (reverse width now works); relabel pan automation...
[ardour.git] / libs / ardour / ardour / delivery.h
index add222a0f175fd87fe9821f6cc91fea7de257beb..c920fadc2cf69a90418d18e2186f087e025742c4 100644 (file)
@@ -20,6 +20,7 @@
 #define __ardour_delivery_h__
 
 #include <string>
+
 #include "ardour/types.h"
 #include "ardour/chan_count.h"
 #include "ardour/io_processor.h"
@@ -31,7 +32,8 @@ class IO;
 class MuteMaster;
 class Panner;
 
-class Delivery : public IOProcessor {
+class Delivery : public IOProcessor
+{
 public:
        enum Role {
                /* main outputs - delivers out-of-place to port buffers, and cannot be removed */
@@ -51,12 +53,11 @@ public:
        /* Delivery to an existing output */
 
        Delivery (Session& s, boost::shared_ptr<IO> io, boost::shared_ptr<MuteMaster> mm, const std::string& name, Role);
-       Delivery (Session& s, boost::shared_ptr<IO> io, boost::shared_ptr<MuteMaster> mm, const XMLNode&);
 
        /* Delivery to a new output owned by this object */
 
        Delivery (Session& s, boost::shared_ptr<MuteMaster> mm, const std::string& name, Role);
-       Delivery (Session&, boost::shared_ptr<MuteMaster> mm, const XMLNode&);
+       ~Delivery ();
 
        bool set_name (const std::string& name);
        std::string display_name() const;
@@ -65,27 +66,21 @@ public:
        bool can_support_io_configuration (const ChanCount& in, ChanCount& out) const;
        bool configure_io (ChanCount in, ChanCount out);
 
-       void run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nframes_t nframes);
+       void run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, nframes_t nframes, bool);
 
        /* supplemental method used with MIDI */
 
-       void flush (nframes_t nframes, nframes64_t time);
-       void transport_stopped ();
-
+       void flush_buffers (nframes_t nframes, framepos_t time);
        void no_outs_cuz_we_no_monitor(bool);
-
-       void set_solo_level (int32_t sl) { _solo_level = sl; }
-       void set_solo_isolated (bool yn) { _solo_isolated = yn; }
-
        void cycle_start (nframes_t);
        void increment_output_offset (nframes_t);
-       void transport_stopped (sframes_t frame);
+       void transport_stopped (framepos_t frame);
 
        BufferSet& output_buffers() { return *_output_buffers; }
 
-       sigc::signal<void> MuteChange;
+       PBD::Signal0<void> MuteChange;
 
-       static sigc::signal<void,nframes_t> CycleStart;
+       static PBD::Signal1<void,nframes_t> CycleStart;
 
        XMLNode& state (bool full);
        int set_state (const XMLNode&, int version);
@@ -102,8 +97,8 @@ public:
        void allow_pan_reset ();
 
        uint32_t pans_required() const { return _configured_input.n_audio(); }
-       void start_pan_touch (uint32_t which);
-       void end_pan_touch (uint32_t which);
+       void start_pan_touch (uint32_t which, double when);
+       void end_pan_touch (uint32_t which, bool mark, double when);
 
   protected:
        Role        _role;
@@ -111,17 +106,15 @@ public:
        gain_t      _current_gain;
        nframes_t   _output_offset;
        bool        _no_outs_cuz_we_no_monitor;
-       uint32_t    _solo_level;
-       bool        _solo_isolated;
        boost::shared_ptr<MuteMaster> _mute_master;
        bool         no_panner_reset;
        boost::shared_ptr<Panner> _panner;
 
        static bool panners_legal;
-       static sigc::signal<int>            PannersLegal;
+       static PBD::Signal0<int>            PannersLegal;
 
        int panners_became_legal ();
-       sigc::connection panner_legal_c;
+       PBD::ScopedConnection panner_legal_c;
        void output_changed (IOChange, void*);
 
        gain_t target_gain ();