summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_track.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-12-26 17:01:31 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-12-26 17:01:31 +0000
commit5558b3cf06b98060438d1e68c8d5d2f4a9c2f8f6 (patch)
treef760d3daccb5e4fdafe73c013a1c8bc11684a015 /libs/ardour/midi_track.cc
parentbda0f938fbf640ad60b6f1d3bc7ed18bcb2a0c2b (diff)
a grab bag of changes correcting and improving the way MIDI note on/off tracking is done. may/should fix a number of problem with spurious note-offs under a variety of circumstances
git-svn-id: svn://localhost/ardour2/branches/3.0@11074 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_track.cc')
-rw-r--r--libs/ardour/midi_track.cc18
1 files changed, 16 insertions, 2 deletions
diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc
index f5743f4992..1b327ae70d 100644
--- a/libs/ardour/midi_track.cc
+++ b/libs/ardour/midi_track.cc
@@ -109,11 +109,11 @@ MidiTrack::set_diskstream (boost::shared_ptr<Diskstream> ds)
{
Track::set_diskstream (ds);
+ midi_diskstream()->reset_tracker ();
+
_diskstream->set_track (this);
_diskstream->set_destructive (_mode == Destructive);
-
_diskstream->set_record_enabled (false);
- //_diskstream->monitor_input (false);
_diskstream_data_recorded_connection.disconnect ();
boost::shared_ptr<MidiDiskstream> mds = boost::dynamic_pointer_cast<MidiDiskstream> (ds);
@@ -391,6 +391,7 @@ void
MidiTrack::realtime_locate ()
{
Glib::RWLock::ReaderLock lm (_processor_lock, Glib::TRY_LOCK);
+
if (!lm.locked ()) {
return;
}
@@ -398,6 +399,8 @@ MidiTrack::realtime_locate ()
for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {
(*i)->realtime_locate ();
}
+
+ midi_diskstream()->reset_tracker ();
}
void
@@ -734,3 +737,14 @@ MidiTrack::act_on_mute ()
}
}
+void
+MidiTrack::set_monitoring (MonitorChoice mc)
+{
+ Track::set_monitoring (mc);
+
+ boost::shared_ptr<MidiDiskstream> md (midi_diskstream());
+
+ if (md) {
+ md->reset_tracker ();
+ }
+}