Use PBD::copy_file in Session::create() to copy the template file.
[ardour.git] / libs / ardour / ardour / track.h
index ec444e78dc34d5f9c0cb1f0cf21528e06df991e9..eee04d9bfa35cc53b8522f0b02074954400c4a7b 100644 (file)
@@ -39,29 +39,31 @@ class Track : public Route
        
        int set_name (string str, void *src);
 
-       virtual int roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, 
-               jack_nframes_t offset, int declick, bool can_record, bool rec_monitors_input) = 0;
+       TrackMode mode () const { return _mode; }
+       virtual int set_mode (TrackMode m) { return false; }
+       virtual bool can_use_mode (TrackMode m, bool& bounce_required) { return false; }
+       sigc::signal<void> TrackModeChanged;
+
+       virtual int roll (nframes_t nframes, nframes_t start_frame, nframes_t end_frame, 
+               nframes_t offset, int declick, bool can_record, bool rec_monitors_input) = 0;
        
-       virtual int no_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, 
-               jack_nframes_t offset, bool state_changing, bool can_record, bool rec_monitors_input) = 0;
+       virtual int no_roll (nframes_t nframes, nframes_t start_frame, nframes_t end_frame, 
+               nframes_t offset, bool state_changing, bool can_record, bool rec_monitors_input) = 0;
        
-       virtual int silent_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nframes_t end_frame, 
-               jack_nframes_t offset, bool can_record, bool rec_monitors_input) = 0;
+       virtual int silent_roll (nframes_t nframes, nframes_t start_frame, nframes_t end_frame, 
+               nframes_t offset, bool can_record, bool rec_monitors_input) = 0;
 
        void toggle_monitor_input ();
 
-       virtual bool can_record();
+       bool can_record();
 
        boost::shared_ptr<Diskstream> diskstream() const { return _diskstream; }
 
        virtual int use_diskstream (string name) = 0;
        virtual int use_diskstream (const PBD::ID& id) = 0;
 
-       TrackMode mode() const { return _mode; }
-       void      set_mode (TrackMode m);
-
-       jack_nframes_t update_total_latency();
-       void           set_latency_delay (jack_nframes_t);
+       nframes_t update_total_latency();
+       void           set_latency_delay (nframes_t);
 
        enum FreezeState {
                NoFreeze,
@@ -75,7 +77,7 @@ class Track : public Route
        virtual void unfreeze () = 0;
 
        virtual void bounce (InterThreadInfo&) = 0;
-       virtual void bounce_range (jack_nframes_t start, jack_nframes_t end, InterThreadInfo&) = 0;
+       virtual void bounce_range (nframes_t start, nframes_t end, InterThreadInfo&) = 0;
 
        XMLNode&    get_state();
        XMLNode&    get_template();
@@ -88,7 +90,6 @@ class Track : public Route
        
        void set_meter_point (MeterPoint, void* src);
        
-       sigc::signal<void> ModeChanged;
        sigc::signal<void> DiskstreamChanged;
        sigc::signal<void> FreezeChange;
 
@@ -97,11 +98,6 @@ class Track : public Route
 
        virtual XMLNode& state (bool full) = 0;
 
-       virtual void passthru_silence (jack_nframes_t start_frame, jack_nframes_t end_frame, 
-               jack_nframes_t nframes, jack_nframes_t offset, int declick, bool meter) = 0;
-
-       virtual uint32_t n_process_buffers () = 0;
-       
        boost::shared_ptr<Diskstream> _diskstream;
        MeterPoint  _saved_meter_point;
        TrackMode   _mode;
@@ -119,13 +115,12 @@ class Track : public Route
 
        struct FreezeRecord {
            FreezeRecord()
-               : playlist(0)
-               , have_mementos(false)
+               : have_mementos(false)
            {}
 
            ~FreezeRecord();
 
-           Playlist*                       playlist;
+           boost::shared_ptr<Playlist>     playlist;
            vector<FreezeRecordInsertInfo*> insert_info;
            bool                            have_mementos;
            FreezeState                     state;