diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-07-24 16:40:56 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-07-24 16:40:56 +0000 |
commit | c685724c8067fc9308c5f66f1b91d445509159e9 (patch) | |
tree | 5261c9d9c168f4f8351e1855f080d0688889e751 /libs/ardour/midi_track.cc | |
parent | e3241a03cf3d3d4cc09c125340444c6f72e0346b (diff) |
step editing now accessed via a context menu on MIDI track rec-enable buttons. along the way, fixed up confusion between set_rec_enable() and set_rec_enabled() methods in Route/Track/Diskstream
git-svn-id: svn://localhost/ardour2/branches/3.0@7482 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_track.cc')
-rw-r--r-- | libs/ardour/midi_track.cc | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 3c43266219..9dced1e0b9 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -49,6 +49,8 @@ using namespace std; using namespace ARDOUR; using namespace PBD; +PBD::Signal1<void,bool> MidiTrack::StepEditStatusChange; + MidiTrack::MidiTrack (Session& sess, string name, Route::Flag flag, TrackMode mode) : Track (sess, name, flag, mode, DataType::MIDI) , _immediate_events(1024) // FIXME: size? @@ -85,6 +87,16 @@ MidiTrack::use_new_diskstream () } void +MidiTrack::set_record_enabled (bool yn, void *src) +{ + if (_step_editing) { + return; + } + + Track::set_record_enabled (yn, src); +} + +void MidiTrack::set_diskstream (boost::shared_ptr<Diskstream> ds) { Track::set_diskstream (ds); @@ -376,7 +388,7 @@ MidiTrack::no_roll (nframes_t nframes, sframes_t start_frame, sframes_t end_fram { int ret = Track::no_roll (nframes, start_frame, end_frame, state_changing, can_record, rec_monitors_input); - if (ret == 0 && _diskstream->record_enabled() && _step_editing) { + if (ret == 0 && _step_editing) { push_midi_input_to_step_edit_ringbuffer (nframes); } @@ -570,8 +582,14 @@ MidiTrack::MidiControl::set_value(float val) void MidiTrack::set_step_editing (bool yn) { - cerr << name() << " IS NOW STEP EDITING\n"; - _step_editing = yn; + if (_session.record_status() != Session::Disabled) { + return; + } + + if (yn != _step_editing) { + _step_editing = yn; + StepEditStatusChange (yn); + } } void |