diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-12-26 17:01:31 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-12-26 17:01:31 +0000 |
commit | 5558b3cf06b98060438d1e68c8d5d2f4a9c2f8f6 (patch) | |
tree | f760d3daccb5e4fdafe73c013a1c8bc11684a015 /libs/ardour/midi_track.cc | |
parent | bda0f938fbf640ad60b6f1d3bc7ed18bcb2a0c2b (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.cc | 18 |
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 (); + } +} |