friend class MidiTrack;
void resolve_tracker (Evoral::EventSink<samplepos_t>& buffer, samplepos_t time);
- boost::shared_ptr<MidiBuffer> get_gui_feed_buffer () const;
void playlist_changed (const PBD::PropertyChange&);
int use_playlist (DataType, boost::shared_ptr<Playlist>);
static samplecnt_t midi_readahead;
static bool _no_disk_output;
- /* The MIDI stuff */
-
- /** A buffer that we use to put newly-arrived MIDI data in for
- the GUI to read (so that it can update itself).
- */
- MidiBuffer _gui_feed_buffer;
- mutable Glib::Threads::Mutex _gui_feed_buffer_mutex;
-
int audio_read (Sample* buf, Sample* mixdown_buffer, float* gain_buffer,
samplepos_t& start, samplecnt_t cnt,
int channel, bool reversed);
void adjust_buffering ();
+ boost::shared_ptr<MidiBuffer> get_gui_feed_buffer () const;
+
protected:
friend class Track;
int do_flush (RunContext context, bool force = false);
, overwrite_offset (0)
, _pending_overwrite (false)
, overwrite_queued (false)
- , _gui_feed_buffer (AudioEngine::instance()->raw_buffer_size (DataType::MIDI))
{
file_sample[DataType::AUDIO] = 0;
file_sample[DataType::MIDI] = 0;
}
}
-boost::shared_ptr<MidiBuffer>
-DiskReader::get_gui_feed_buffer () const
-{
- boost::shared_ptr<MidiBuffer> b (new MidiBuffer (AudioEngine::instance()->raw_buffer_size (DataType::MIDI)));
-
- Glib::Threads::Mutex::Lock lm (_gui_feed_buffer_mutex);
- b->copy (_gui_feed_buffer);
- return b;
-}
-
void
DiskReader::reset_tracker ()
{
first_recordable_sample = max_samplepos;
}
+boost::shared_ptr<MidiBuffer>
+DiskWriter::get_gui_feed_buffer () const
+{
+ boost::shared_ptr<MidiBuffer> b (new MidiBuffer (AudioEngine::instance()->raw_buffer_size (DataType::MIDI)));
+
+ Glib::Threads::Mutex::Lock lm (_gui_feed_buffer_mutex);
+ b->copy (_gui_feed_buffer);
+ return b;
+}
+
void
DiskWriter::set_record_enabled (bool yn)
{
boost::shared_ptr<MidiBuffer>
MidiTrack::get_gui_feed_buffer () const
{
- return _disk_reader->get_gui_feed_buffer ();
+ return _disk_writer->get_gui_feed_buffer ();
}
void