Fix up confusion with relayering after movement drags in
[ardour.git] / libs / ardour / ardour / route.h
index 7f485c18c3fb5183fce20b5b67e97eb6704a0ffc..3fab63bb9b0c3e99555dfe7b8e07c8ebb1edad6a 100644 (file)
@@ -98,6 +98,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
        void set_comment (std::string str, void *src);
 
        bool set_name (const std::string& str);
+       static void set_name_in_state (XMLNode &, const std::string &);
 
        int32_t order_key (std::string const &) const;
        void set_order_key (std::string const &, int32_t);
@@ -106,6 +107,9 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
        bool is_master() const { return _flags & MasterOut; }
        bool is_monitor() const { return _flags & MonitorOut; }
 
+       virtual MonitorState monitoring_state () const;
+       virtual MeterState metering_state () const;
+       
        /* these are the core of the API of a Route. see the protected sections as well */
 
        virtual int roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame,
@@ -117,7 +121,6 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
        virtual int silent_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame,
                                 bool& need_butler);
 
-       virtual void toggle_monitor_input ();
        virtual bool can_record() { return false; }
 
        virtual void set_record_enabled (bool /*yn*/, void * /*src*/) {}
@@ -139,7 +142,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
 
        bool muted () const;
        void set_mute (bool yn, void* src);
-
+       
        /* controls use set_solo() to modify this route's solo state
         */
 
@@ -202,6 +205,8 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
                }
        }
 
+       boost::shared_ptr<Processor> processor_by_id (PBD::ID) const;
+
        boost::shared_ptr<Processor> nth_plugin (uint32_t n);
        boost::shared_ptr<Processor> nth_send (uint32_t n);
 
@@ -288,7 +293,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
        /* stateful */
 
        XMLNode& get_state();
-       int set_state (const XMLNode&, int version);
+       virtual int set_state (const XMLNode&, int version);
        virtual XMLNode& get_template();
 
        XMLNode& get_processor_state ();
@@ -427,7 +432,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
 
        virtual void process_output_buffers (BufferSet& bufs,
                                             framepos_t start_frame, framepos_t end_frame,
-                                            pframes_t nframes, bool with_processors, int declick,
+                                            pframes_t nframes, int declick,
                                             bool gain_automation_ok);
 
        boost::shared_ptr<IO> _input;
@@ -465,6 +470,8 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
        boost::shared_ptr<MuteControllable> _mute_control;
        boost::shared_ptr<MuteMaster> _mute_master;
 
+       virtual void act_on_mute () {}
+
        std::string    _comment;
        bool           _have_internal_generator;
        bool           _solo_safe;
@@ -490,16 +497,13 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember,
        uint32_t pans_required() const;
        ChanCount n_process_buffers ();
 
-       virtual bool should_monitor () const;
        virtual void maybe_declick (BufferSet&, framecnt_t, int);
 
-       virtual int  _set_state (const XMLNode&, int);
-
        boost::shared_ptr<Amp>       _amp;
        boost::shared_ptr<PeakMeter> _meter;
 
   private:
-       int _set_state_2X (const XMLNode&, int);
+       int set_state_2X (const XMLNode&, int);
        void set_processor_state_2X (XMLNodeList const &, int);
 
        static uint32_t order_key_cnt;