class Session;
class Track;
class Location;
+class BufferSet;
/** Parent class for classes which can stream data to and from disk.
* These are used by Tracks to get playback and put recorded data.
protected:
friend class Track;
- virtual int process (framepos_t transport_frame, pframes_t nframes, framecnt_t &) = 0;
+ virtual int process (BufferSet&, framepos_t transport_frame, pframes_t nframes, framecnt_t &, bool need_disk_signal) = 0;
+ virtual frameoffset_t calculate_playback_distance (pframes_t nframes) = 0;
virtual bool commit (framecnt_t) = 0;
//private:
virtual void use_destructive_playlist () {}
virtual void prepare_to_stop (framepos_t pos);
- void calculate_record_range(OverlapType ot, framepos_t transport_frame, framecnt_t nframes,
- framecnt_t& rec_nframes, framecnt_t& rec_offset);
+ void engage_record_enable ();
+ void disengage_record_enable ();
+
+ virtual bool prep_record_enable () = 0;
+ virtual bool prep_record_disable () = 0;
+
+ void calculate_record_range (
+ Evoral::OverlapType ot, framepos_t transport_frame, framecnt_t nframes,
+ framecnt_t& rec_nframes, framecnt_t& rec_offset
+ );
static framecnt_t disk_io_chunk_frames;
std::vector<CaptureInfo*> capture_info;
- mutable Glib::Mutex capture_info_lock;
+ mutable Glib::Threads::Mutex capture_info_lock;
uint32_t i_am_the_modifier;
bool in_set_state;
- Glib::Mutex state_lock;
+ Glib::Threads::Mutex state_lock;
PBD::ScopedConnectionList playlist_connections;