compile fix
[ardour.git] / libs / ardour / ardour / route.h
index 6c0380963df8f5210dab3b0ea6cebc6205e78177..3ac2d6dda6e8cc92cdf0a2d706eb45559a7e10f1 100644 (file)
@@ -57,6 +57,7 @@
 #include "ardour/soloable.h"
 #include "ardour/solo_control.h"
 #include "ardour/solo_safe_control.h"
+#include "ardour/slavable.h"
 
 class RoutePinWindowProxy;
 
@@ -84,25 +85,19 @@ class PhaseControl;
 class MonitorControl;
 
 class LIBARDOUR_API Route : public Stripable,
+                            public GraphNode,
                             public Soloable,
                             public Muteable,
                             public Monitorable,
                             public Automatable,
                             public RouteGroupMember,
-                            public GraphNode,
                             public boost::enable_shared_from_this<Route>
 {
 public:
 
        typedef std::list<boost::shared_ptr<Processor> > ProcessorList;
 
-       enum Flag {
-               Auditioner = 0x1,
-               MasterOut = 0x2,
-               MonitorOut = 0x4
-       };
-
-       Route (Session&, std::string name, Flag flags = Flag(0), DataType default_type = DataType::AUDIO);
+       Route (Session&, std::string name, PresentationInfo::Flag flags = PresentationInfo::Flag(0), DataType default_type = DataType::AUDIO);
        virtual ~Route();
 
        virtual int init ();
@@ -126,14 +121,6 @@ public:
        bool set_name (const std::string& str);
        static void set_name_in_state (XMLNode &, const std::string &, bool rename_playlist = true);
 
-       uint32_t order_key () const;
-       bool has_order_key () const;
-       void set_order_key (uint32_t);
-
-       bool is_auditioner() const { return _flags & Auditioner; }
-       bool is_master() const { return _flags & MasterOut; }
-       bool is_monitor() const { return _flags & MonitorOut; }
-
        MonitorState monitoring_state () const;
        virtual MeterState metering_state () const;
 
@@ -181,8 +168,6 @@ public:
        bool is_safe () const {
                return _solo_safe_control->get_value();
        }
-
-       bool listening_via_monitor () const;
        void enable_monitor_send ();
 
        void set_denormal_protection (bool yn);
@@ -294,6 +279,7 @@ public:
        void ab_plugins (bool forward);
        void clear_processors (Placement);
        void all_visible_processors_active (bool);
+       void move_instrument_down (bool postfader = false);
 
        bool strict_io () const { return _strict_io; }
        bool set_strict_io (bool);
@@ -374,7 +360,9 @@ public:
 
        /** the processors have changed; the parameter indicates what changed */
        PBD::Signal1<void,RouteProcessorChange> processors_changed;
+       PBD::Signal0<void> fan_out; // used to signal the GUI to fan-out (track-creation)
        PBD::Signal1<void,void*> record_enable_changed;
+       PBD::Signal0<void> processor_latency_changed;
        /** the metering point has changed */
        PBD::Signal0<void>       meter_change;
        PBD::Signal0<void>       signal_latency_changed;
@@ -383,10 +371,6 @@ public:
        /** Emitted with the process lock held */
        PBD::Signal0<void>       io_changed;
 
-       /* gui's call this for their own purposes. */
-
-       PBD::Signal2<void,std::string,void*> gui_changed;
-
        /* stateful */
 
        XMLNode& get_state();
@@ -396,6 +380,8 @@ public:
        XMLNode& get_processor_state ();
        virtual void set_processor_state (const XMLNode&);
 
+       boost::weak_ptr<Route> weakroute ();
+
        int save_as_template (const std::string& path, const std::string& name);
 
        PBD::Signal1<void,void*> SelectedChanged;
@@ -458,10 +444,11 @@ public:
                return _mute_control;
        }
 
-       bool can_be_muted_by_others () const { return !is_master(); }
+       bool can_be_muted_by_others () const { return can_solo(); }
        bool muted () const { return _mute_control->muted(); }
+       bool muted_by_masters () const { return _mute_control->muted_by_masters(); }
+       bool muted_by_self () const { return _mute_control->muted_by_self(); }
        bool muted_by_others_soloing () const;
-       bool muted_by_others () const;
 
        boost::shared_ptr<SoloIsolateControl> solo_isolate_control() const {
                return _solo_isolate_control;
@@ -569,28 +556,6 @@ public:
 
        void protect_automation ();
 
-       enum {
-               /* These numbers are taken from MIDI Machine Control,
-                  which can only control up to 317 tracks without
-                  doing sysex segmentation.
-               */
-               MasterBusRemoteControlID = 318,
-               MonitorBusRemoteControlID = 319,
-       };
-
-       void     set_remote_control_id (uint32_t id, bool notify_class_listeners = true);
-       uint32_t remote_control_id () const;
-       void     set_remote_control_id_explicit (uint32_t order_key);
-
-       /* for things concerned about *this* route's RID */
-
-       PBD::Signal0<void> RemoteControlIDChanged;
-
-       /* for things concerned about *any* route's RID changes */
-
-       static PBD::Signal0<void> RemoteControlIDChange;
-       static PBD::Signal0<void> SyncOrderKeys;
-
        bool has_external_redirects() const;
 
        /* can only be executed by a route for which is_monitor() is true
@@ -600,8 +565,7 @@ public:
                        pframes_t nframes, int declick);
 
         bool slaved_to (boost::shared_ptr<VCA>) const;
-        void vca_assign (boost::shared_ptr<VCA>);
-        void vca_unassign (boost::shared_ptr<VCA>);
+        bool slaved () const;
 
   protected:
         friend class Session;
@@ -612,8 +576,8 @@ public:
        void curve_reallocate ();
        virtual void set_block_size (pframes_t nframes);
 
-protected:
-       virtual framecnt_t check_initial_delay (framecnt_t nframes, framepos_t&) { return nframes; }
+  protected:
+        virtual framecnt_t check_initial_delay (framecnt_t nframes, framepos_t&) { return nframes; }
 
        void fill_buffers_with_input (BufferSet& bufs, boost::shared_ptr<IO> io, pframes_t nframes);
 
@@ -628,6 +592,8 @@ protected:
                                             pframes_t nframes, int declick,
                                             bool gain_automation_ok);
 
+       void flush_processor_buffers_locked (framecnt_t nframes);
+
        virtual void bounce_process (BufferSet& bufs,
                                     framepos_t start_frame, framecnt_t nframes,
                                                                                                                         boost::shared_ptr<Processor> endpoint, bool include_endpoint,
@@ -665,7 +631,6 @@ protected:
        gint           _pending_process_reorder; // atomic
        gint           _pending_signals; // atomic
 
-       Flag           _flags;
        int            _pending_declick;
        MeterPoint     _meter_point;
        MeterPoint     _pending_meter_point;
@@ -720,16 +685,12 @@ protected:
 
        boost::shared_ptr<Processor> the_instrument_unlocked() const;
 
-private:
+  private:
+       int64_t _track_number;
+
        int set_state_2X (const XMLNode&, int);
        void set_processor_state_2X (XMLNodeList const &, int);
 
-       uint32_t _order_key;
-       bool _has_order_key;
-       uint32_t _remote_control_id;
-
-       int64_t _track_number;
-
        void input_change_handler (IOChange, void *src);
        void output_change_handler (IOChange, void *src);
        void sidechain_change_handler (IOChange, void *src);
@@ -812,7 +773,6 @@ private:
 
        void reset_instrument_info ();
 
-       void set_remote_control_id_internal (uint32_t id, bool notify_class_listeners = true);
         void solo_control_changed (bool self, PBD::Controllable::GroupControlDisposition);
 };