X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fdiskstream.h;h=4809e17868bab41a9a77756841754386922904fe;hb=4b95621853072c44b1df698df8a96d7d9167319f;hp=d3b5d6dce41e8ac9d0f5931ec03473c1bd9e54e2;hpb=93c7aeba048f19df5abee5e4325ef8b0ef62c279;p=ardour.git diff --git a/libs/ardour/ardour/diskstream.h b/libs/ardour/ardour/diskstream.h index d3b5d6dce4..4809e17868 100644 --- a/libs/ardour/ardour/diskstream.h +++ b/libs/ardour/ardour/diskstream.h @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: diskstream.h 579 2006-06-12 19:56:37Z essej $ */ #ifndef __ardour_diskstream_h__ @@ -54,7 +53,7 @@ class Session; class Playlist; class IO; - class Diskstream : public sigc::trackable, public PBD::StatefulDestructible +class Diskstream : public PBD::StatefulDestructible { public: enum Flag { @@ -76,8 +75,8 @@ class IO; virtual float playback_buffer_load() const = 0; virtual float capture_buffer_load() const = 0; - void set_flag (Flag f) { _flags |= f; } - void unset_flag (Flag f) { _flags &= ~f; } + void set_flag (Flag f) { _flags = Flag (_flags | f); } + void unset_flag (Flag f) { _flags = Flag (_flags & ~f); } AlignStyle alignment_style() const { return _alignment_style; } void set_align_style (AlignStyle); @@ -90,7 +89,8 @@ class IO; virtual void set_record_enabled (bool yn) = 0; bool destructive() const { return _flags & Destructive; } - virtual void set_destructive (bool yn); + virtual int set_destructive (bool yn) { return -1; } + virtual bool can_become_destructive (bool& requires_bounce) const { return false; } bool hidden() const { return _flags & Hidden; } bool recordable() const { return _flags & Recordable; } @@ -103,9 +103,9 @@ class IO; void set_speed (double); void non_realtime_set_speed (); - Playlist* playlist () { return _playlist; } + boost::shared_ptr playlist () { return _playlist; } - virtual int use_playlist (Playlist *); + virtual int use_playlist (boost::shared_ptr); virtual int use_new_playlist () = 0; virtual int use_copy_playlist () = 0; @@ -114,7 +114,7 @@ class IO; nframes_t get_capture_start_frame (uint32_t n=0); nframes_t get_captured_frames (uint32_t n=0); - uint32_t n_channels() { return _n_channels; } + ChanCount n_channels() { return _n_channels; } static nframes_t disk_io_frames() { return disk_io_chunk_frames; } static void set_disk_io_chunk_frames (uint32_t n) { disk_io_chunk_frames = n; } @@ -123,7 +123,6 @@ class IO; virtual XMLNode& get_state(void) = 0; virtual int set_state(const XMLNode& node) = 0; - // FIXME: makes sense for all diskstream types? virtual void monitor_input (bool) {} nframes_t capture_offset() const { return _capture_offset; } @@ -138,6 +137,8 @@ class IO; void handle_input_change (IOChange, void *src); + void remove_region_from_last_capture (boost::weak_ptr wregion); + sigc::signal RecordEnableChanged; sigc::signal SpeedChanged; sigc::signal ReverseChanged; @@ -147,7 +148,6 @@ class IO; static sigc::signal DiskOverrun; static sigc::signal DiskUnderrun; - static sigc::signal >*> DeleteSources; protected: friend class Session; @@ -198,15 +198,13 @@ class IO; /** For non-butler contexts (allocates temporary working buffers) */ virtual int do_refill_with_alloc() = 0; - /* XXX fix this redundancy ... */ virtual void playlist_changed (Change); virtual void playlist_modified (); - virtual void playlist_deleted (Playlist*); + virtual void playlist_deleted (boost::weak_ptr); - virtual void finish_capture (bool rec_monitors_input) = 0; virtual void transport_stopped (struct tm&, time_t, bool abort) = 0; struct CaptureInfo { @@ -225,16 +223,17 @@ class IO; virtual bool realtime_set_speed (double, bool global_change); std::list > _last_capture_regions; + virtual int use_pending_capture_data (XMLNode& node) = 0; virtual void get_input_sources () = 0; virtual void check_record_status (nframes_t transport_frame, nframes_t nframes, bool can_record) = 0; virtual void set_align_style_from_io() {} - virtual void setup_destructive_playlist () = 0; - virtual void use_destructive_playlist () = 0; + virtual void setup_destructive_playlist () {} + virtual void use_destructive_playlist () {} static nframes_t disk_io_chunk_frames; - vector capture_info; + std::vector capture_info; Glib::Mutex capture_info_lock; uint32_t i_am_the_modifier; @@ -242,8 +241,9 @@ class IO; string _name; ARDOUR::Session& _session; ARDOUR::IO* _io; - uint32_t _n_channels; - Playlist* _playlist; + ChanCount _n_channels; + + boost::shared_ptr _playlist; mutable gint _record_enabled; double _visible_speed; @@ -281,6 +281,7 @@ class IO; nframes_t file_frame; nframes_t playback_sample; nframes_t playback_distance; + bool commit_should_unlock; uint32_t _read_data_count; uint32_t _write_data_count; @@ -297,10 +298,9 @@ class IO; sigc::connection ports_created_c; sigc::connection plmod_connection; - sigc::connection plstate_connection; sigc::connection plgone_connection; - unsigned char _flags; + Flag _flags; }; }; /* namespace ARDOUR */