summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/midi_source.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-07-20 18:13:03 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-07-20 18:13:03 +0000
commitc99738d88e8a2ad806b219b9f3614a6b55b6bf37 (patch)
treed506a27d404e1b63063372ebe2f63aacc7e6ebb4 /libs/ardour/ardour/midi_source.h
parent8c7fda11cf47cd8dd04c6eabffc437dd942403d5 (diff)
try to fix data loss at end of a capture pass for MIDI - add a new virtual method to MidiSource that specifies what should be done with stuck notes, remove duplicate(i hope) _last_flush_frame from SMFSource that mirrored, more or less, MidiSource::_last_write_end; use new virtual method when stopping after capture.
git-svn-id: svn://localhost/ardour2/branches/3.0@9910 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/midi_source.h')
-rw-r--r--libs/ardour/ardour/midi_source.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h
index a7b47efe21..735a38faa5 100644
--- a/libs/ardour/ardour/midi_source.h
+++ b/libs/ardour/ardour/midi_source.h
@@ -83,6 +83,13 @@ class MidiSource : virtual public Source, public boost::enable_shared_from_this<
virtual void mark_streaming_write_completed ();
void mark_write_starting_now ();
+ /* like ::mark_streaming_write_completed() but with more arguments to
+ * allow control over MIDI-specific behaviour. Expected to be used only
+ * when recording actual MIDI input, rather then when importing files
+ * etc.
+ */
+ virtual void mark_midi_streaming_write_completed (Evoral::Sequence<Evoral::MusicalTime>::StuckNoteOption, Evoral::MusicalTime when = 0);
+
virtual void session_saved();
std::string captured_for() const { return _captured_for; }
@@ -91,6 +98,9 @@ class MidiSource : virtual public Source, public boost::enable_shared_from_this<
uint32_t read_data_count() const { return _read_data_count; }
uint32_t write_data_count() const { return _write_data_count; }
+ framepos_t last_write_end() const { return _last_write_end; }
+ void set_last_write_end (framepos_t pos) { _last_write_end = pos; }
+
static PBD::Signal1<void,MidiSource*> MidiSourceCreated;
XMLNode& get_state ();