}
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;
int remove_channel (uint32_t how_many);
bool set_name (std::string const &);
+ bool set_write_source_name (const std::string& str);
/* stateful */
}
}
- CubicInterpolation interpolation;
protected:
friend class Session;
typedef std::vector<ChannelInfo*> ChannelList;
+ CubicInterpolation interpolation;
+
/* 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,
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;
SerializedRCUManager<ChannelList> 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<ChannelList>, uint32_t how_many);
int remove_channel_from (boost::shared_ptr<ChannelList>, uint32_t how_many);