(1) remove most uses of MementoCommand for Playlist and Region (2) move frozen state...
[ardour.git] / libs / ardour / ardour / track.h
index 29a4aa8e2596ce330028f08cdd92d87fb160cc88..eee9f03fe50a0e0def1fb1348bb4b1c6aaf00a0b 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2006 Paul Davis 
+    Copyright (C) 2006 Paul Davis
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -34,25 +34,25 @@ class Region;
 class Track : public Route
 {
   public:
-       Track (Session&, string name, Route::Flag f = Route::Flag (0), TrackMode m = Normal, DataType default_type = DataType::AUDIO);
+       Track (Session&, std::string name, Route::Flag f = Route::Flag (0), TrackMode m = Normal, DataType default_type = DataType::AUDIO);
 
        virtual ~Track ();
-       
+
        bool set_name (const std::string& str);
 
        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, 
-                         int declick, bool can_record, bool rec_monitors_input) = 0;
-       
-       virtual int no_roll (nframes_t nframes, nframes_t start_frame, nframes_t end_frame, 
-                            bool state_changing, bool can_record, bool rec_monitors_input) = 0;
-       
-       virtual int silent_roll (nframes_t nframes, nframes_t start_frame, nframes_t end_frame, 
-                                bool can_record, bool rec_monitors_input) = 0;
+       virtual int set_mode (TrackMode /*m*/) { return false; }
+       virtual bool can_use_mode (TrackMode /*m*/, bool& /*bounce_required*/) { return false; }
+       PBD::Signal0<void> TrackModeChanged;
+
+       virtual int no_roll (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
+                       bool state_changing, bool can_record, bool rec_monitors_input);
+
+       int silent_roll (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
+                       bool can_record, bool rec_monitors_input);
+
+       virtual int roll (nframes_t nframes, sframes_t start_frame, sframes_t end_frame,
+                       int declick, bool can_record, bool rec_monitors_input) = 0;
 
        void toggle_monitor_input ();
 
@@ -60,7 +60,7 @@ class Track : public Route
 
        boost::shared_ptr<Diskstream> diskstream() const { return _diskstream; }
 
-       virtual int use_diskstream (string name) = 0;
+       virtual int use_diskstream (std::string name) = 0;
        virtual int use_diskstream (const PBD::ID& id) = 0;
 
        nframes_t update_total_latency();
@@ -73,8 +73,8 @@ class Track : public Route
        };
 
        FreezeState freeze_state() const;
-       virtual void freeze (InterThreadInfo&) = 0;
+
+       virtual void freeze_me (InterThreadInfo&) = 0;
        virtual void unfreeze () = 0;
 
        virtual boost::shared_ptr<Region> bounce (InterThreadInfo&) = 0;
@@ -82,18 +82,16 @@ class Track : public Route
 
        XMLNode&    get_state();
        XMLNode&    get_template();
-       virtual int set_state(const XMLNode& node) = 0;
+       virtual int set_state (const XMLNode&, int version) = 0;
        static void zero_diskstream_id_in_xml (XMLNode&);
 
        boost::shared_ptr<PBD::Controllable> rec_enable_control() { return _rec_enable_control; }
 
        bool record_enabled() const;
        void set_record_enable (bool yn, void *src);
-       
-       void set_meter_point (MeterPoint, void* src);
-       
-       sigc::signal<void> DiskstreamChanged;
-       sigc::signal<void> FreezeChange;
+
+       PBD::Signal0<void> DiskstreamChanged;
+       PBD::Signal0<void> FreezeChange;
 
   protected:
        Track (Session& sess, const XMLNode& node, DataType default_type = DataType::AUDIO);
@@ -106,47 +104,45 @@ class Track : public Route
 
        //private: (FIXME)
        struct FreezeRecordProcessorInfo {
-           FreezeRecordProcessorInfo(XMLNode& st, boost::shared_ptr<Processor> proc) 
-                   : state (st), processor (proc) {}
+               FreezeRecordProcessorInfo(XMLNode& st, boost::shared_ptr<Processor> proc)
+                       : state (st), processor (proc) {}
 
-           XMLNode                      state;
-           boost::shared_ptr<Processor> processor;
-           PBD::ID                      id;
+               XMLNode                      state;
+               boost::shared_ptr<Processor> processor;
+               PBD::ID                      id;
        };
 
        struct FreezeRecord {
-           FreezeRecord()
-               : have_mementos(false)
-           {}
-
-           ~FreezeRecord();
-
-           boost::shared_ptr<Playlist>        playlist;
-           vector<FreezeRecordProcessorInfo*> processor_info;
-           bool                               have_mementos;
-           FreezeState                        state;
-           gain_t                          gain;
-           AutoState                       gain_automation_state;
-           AutoState                       pan_automation_state;
+               FreezeRecord()
+                       : have_mementos(false)
+               {}
+
+               ~FreezeRecord();
+
+               boost::shared_ptr<Playlist>        playlist;
+               std::vector<FreezeRecordProcessorInfo*> processor_info;
+               bool                               have_mementos;
+               FreezeState                        state;
+               gain_t                          gain;
+               AutoState                       gain_automation_state;
+               AutoState                       pan_automation_state;
        };
 
        struct RecEnableControllable : public PBD::Controllable {
-           RecEnableControllable (Track&);
-           
-           void set_value (float);
-           float get_value (void) const;
+               RecEnableControllable (Track&);
 
-           Track& track;
+               void set_value (float);
+               float get_value (void) const;
+
+               Track& track;
        };
 
        virtual void set_state_part_two () = 0;
 
        FreezeRecord          _freeze_record;
        XMLNode*              pending_state;
-       sigc::connection      recenable_connection;
-       sigc::connection      ic_connection;
        bool                  _destructive;
-       
+
        boost::shared_ptr<RecEnableControllable> _rec_enable_control;
 };