diff options
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/disk_io.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/disk_reader.h | 26 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 4 | ||||
-rw-r--r-- | libs/ardour/ardour/session_event.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/track.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/types.h | 6 |
6 files changed, 23 insertions, 22 deletions
diff --git a/libs/ardour/ardour/disk_io.h b/libs/ardour/ardour/disk_io.h index 65486febf4..1ae7cbfa94 100644 --- a/libs/ardour/ardour/disk_io.h +++ b/libs/ardour/ardour/disk_io.h @@ -151,13 +151,11 @@ protected: ChannelInfo (samplecnt_t buffer_size); virtual ~ChannelInfo (); - /** A pair of random-access ringbuffers for data to be played back. + /** A semi-random-access ringbuffers for data to be played back. * written to in the butler thread, read from in the process * thread. - * - * */ - PBD::PlaybackBuffer<Sample>* rbuf[2]; + PBD::PlaybackBuffer<Sample>* rbuf; /** A ringbuffer for data to be recorded back, written to in the * process thread, read from in the butler thread. diff --git a/libs/ardour/ardour/disk_reader.h b/libs/ardour/ardour/disk_reader.h index e43192f0ff..dbe639d5c6 100644 --- a/libs/ardour/ardour/disk_reader.h +++ b/libs/ardour/ardour/disk_reader.h @@ -54,7 +54,7 @@ public: void realtime_handle_transport_stopped (); void realtime_locate (bool); bool overwrite_existing_buffers (); - void set_pending_overwrite (); + void set_pending_overwrite (OverwriteReason); void set_loop (Location *); int set_state (const XMLNode&, int version); @@ -118,8 +118,6 @@ public: static void alloc_loop_declick (samplecnt_t sample_rate); Glib::Threads::Mutex rbuf_lock; - void queue_switch_rbuf (); - void switch_rbufs (); protected: friend class Track; @@ -186,10 +184,8 @@ protected: }; private: - bool _switch_rbuf; - int process_rbuf; - int other_rbuf; samplepos_t overwrite_sample; + sampleoffset_t overwrite_offset; samplepos_t new_file_sample; mutable gint _pending_overwrite; bool overwrite_queued; @@ -211,14 +207,13 @@ private: static Declicker loop_declick_out; static samplecnt_t loop_fade_length; - int audio_read (PBD::PlaybackBuffer<Sample>*, - Sample* sum_buffer, - Sample* mixdown_buffer, - float* gain_buffer, - samplepos_t& start, samplecnt_t cnt, - ReaderChannelInfo* rci, - int channel, - bool reversed); + samplecnt_t audio_read (Sample* sum_buffer, + Sample* mixdown_buffer, + float* gain_buffer, + samplepos_t& start, samplecnt_t cnt, + ReaderChannelInfo* rci, + int channel, + bool reversed); static Sample* _sum_buffer; static Sample* _mixdown_buffer; @@ -234,7 +229,8 @@ private: void get_midi_playback (MidiBuffer& dst, samplepos_t start_sample, samplepos_t end_sample, MonitorState, BufferSet&, double speed, samplecnt_t distance); void maybe_xfade_loop (Sample*, samplepos_t read_start, samplepos_t read_end, ReaderChannelInfo*); - + bool overwrite_existing_audio (); + bool overwrite_existing_midi (); }; } // namespace diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 6c34a1b93f..5491f49df4 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -456,7 +456,7 @@ public: void allow_auto_play (bool yn); void request_transport_speed (double speed, bool as_default = true, TransportRequestSource origin = TRS_UI); void request_transport_speed_nonzero (double, bool as_default = true, TransportRequestSource origin = TRS_UI); - void request_overwrite_buffer (boost::shared_ptr<Track>); + void request_overwrite_buffer (boost::shared_ptr<Track>, OverwriteReason); void adjust_playback_buffering(); void adjust_capture_buffering(); @@ -1685,7 +1685,7 @@ private: void set_play_loop (bool yn, bool change_transport_state); void unset_play_loop (bool change_transport_state = false); - void overwrite_some_buffers (boost::shared_ptr<Route>); + void overwrite_some_buffers (boost::shared_ptr<Route>, OverwriteReason); void flush_all_inserts (); int micro_locate (samplecnt_t distance); diff --git a/libs/ardour/ardour/session_event.h b/libs/ardour/ardour/session_event.h index da6a0505f2..ddf7210617 100644 --- a/libs/ardour/ardour/session_event.h +++ b/libs/ardour/ardour/session_event.h @@ -83,6 +83,7 @@ public: union { bool yes_or_no; samplepos_t target2_sample; + OverwriteReason overwrite; }; boost::shared_ptr<Track> track; diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h index 0b6462fbc3..fbac03edf0 100644 --- a/libs/ardour/ardour/track.h +++ b/libs/ardour/ardour/track.h @@ -137,7 +137,7 @@ public: float capture_buffer_load () const; int do_refill (); int do_flush (RunContext, bool force = false); - void set_pending_overwrite (); + void set_pending_overwrite (OverwriteReason); int seek (samplepos_t, bool complete_refill = false); bool can_internal_playback_seek (samplecnt_t); void internal_playback_seek (samplecnt_t); diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index 7cd3759a88..26da1cf9e1 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -792,6 +792,12 @@ enum LoopFadeChoice { XFadeLoop, }; +enum OverwriteReason { + PlaylistModified, + LoopDisabled, + LoopChanged, +}; + typedef std::vector<CaptureInfo*> CaptureInfos; } // namespace ARDOUR |