X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Faudio_diskstream.h;h=21a178946800529f6a31411187af2a3be3bb3f0e;hb=11da4a83e499db74e75d5b59973b0e52b0c1277a;hp=f93c949a38e714bf93ca0baed4507742354a8200;hpb=91fac4c96dc6210dcc056da70dc608700d7eb570;p=ardour.git diff --git a/libs/ardour/ardour/audio_diskstream.h b/libs/ardour/ardour/audio_diskstream.h index f93c949a38..21a1789468 100644 --- a/libs/ardour/ardour/audio_diskstream.h +++ b/libs/ardour/ardour/audio_diskstream.h @@ -73,6 +73,7 @@ class LIBARDOUR_API AudioDiskstream : public Diskstream } void set_record_enabled (bool yn); + void set_record_safe (bool yn); int set_destructive (bool yn); int set_non_layered (bool yn); bool can_become_destructive (bool& requires_bounce) const; @@ -208,9 +209,8 @@ class LIBARDOUR_API AudioDiskstream : public Diskstream /* The two central butler operations */ int do_flush (RunContext context, bool force = false); - int do_refill () { return _do_refill(_mixdown_buffer, _gain_buffer); } + int do_refill () { return _do_refill(_mixdown_buffer, _gain_buffer, 0); } - int do_refill_with_alloc (); int read (Sample* buf, Sample* mixdown_buffer, float* gain_buffer, framepos_t& start, framecnt_t cnt, @@ -244,12 +244,11 @@ class LIBARDOUR_API AudioDiskstream : public Diskstream bool prep_record_enable (); bool prep_record_disable (); - + // Working buffers for do_refill (butler thread) static void allocate_working_buffers(); static void free_working_buffers(); - static size_t _working_buffers_size; static Sample* _mixdown_buffer; static gain_t* _gain_buffer; @@ -257,9 +256,12 @@ class LIBARDOUR_API AudioDiskstream : public Diskstream SerializedRCUManager channels; + protected: + int _do_refill_with_alloc (bool one_chunk_only); + /* really */ private: - int _do_refill (Sample *mixdown_buffer, float *gain_buffer); + int _do_refill (Sample *mixdown_buffer, float *gain_buffer, framecnt_t fill_level); int add_channel_to (boost::shared_ptr, uint32_t how_many); int remove_channel_from (boost::shared_ptr, uint32_t how_many);