allow to include solo,mute buttons on meterbridge
[ardour.git] / libs / ardour / ardour / route.h
index 1a42999e6b9bffc03352e75b2c8edb968b69cb46..2e44d00984f018df7b13ce097a8974c520b9d9b2 100644 (file)
@@ -74,7 +74,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
        typedef std::list<boost::shared_ptr<Processor> > ProcessorList;
 
        enum Flag {
-               Hidden = 0x1,
+               Auditioner = 0x1,
                MasterOut = 0x2,
                MonitorOut = 0x4
        };
@@ -106,7 +106,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
        void set_order_key (RouteSortOrderKey, uint32_t);
         void sync_order_keys (RouteSortOrderKey);
 
-       bool is_hidden() const { return _flags & Hidden; }
+       bool is_auditioner() const { return _flags & Auditioner; }
        bool is_master() const { return _flags & MasterOut; }
        bool is_monitor() const { return _flags & MonitorOut; }
 
@@ -181,6 +181,9 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
        MeterPoint   meter_point() const { return _meter_point; }
        void         meter ();
 
+       void         set_meter_type (MeterType t) { _meter_type = t; }
+       MeterType    meter_type() const { return _meter_type; }
+
        /* Processors */
 
        boost::shared_ptr<Amp> amp() const  { return _amp; }
@@ -436,6 +439,12 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
 
        bool has_external_redirects() const;
 
+        /* can only be executed by a route for which is_monitor() is true
+          (i.e. the monitor out)
+        */
+        void monitor_run (framepos_t start_frame, framepos_t end_frame,
+                         pframes_t nframes, int declick);
+
   protected:
        friend class Session;
 
@@ -448,11 +457,13 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
   protected:
        virtual framecnt_t check_initial_delay (framecnt_t nframes, framepos_t&) { return nframes; }
 
-       void passthru (framepos_t start_frame, framepos_t end_frame,
+        void fill_buffers_with_input (BufferSet& bufs, boost::shared_ptr<IO> io, pframes_t nframes);
+
+        void passthru (BufferSet&, framepos_t start_frame, framepos_t end_frame,
                        pframes_t nframes, int declick);
 
        virtual void write_out_of_band_data (BufferSet& /* bufs */, framepos_t /* start_frame */, framepos_t /* end_frame */,
-                       framecnt_t /* nframes */) {}
+                                            framecnt_t /* nframes */) {}
 
        virtual void process_output_buffers (BufferSet& bufs,
                                             framepos_t start_frame, framepos_t end_frame,
@@ -478,6 +489,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
        Flag           _flags;
        int            _pending_declick;
        MeterPoint     _meter_point;
+       MeterType      _meter_type;
        boost::dynamic_bitset<> _phase_invert;
        bool           _self_solo;
        uint32_t       _soloed_by_others_upstream;