summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_track.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-07-24 16:40:56 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-07-24 16:40:56 +0000
commitc685724c8067fc9308c5f66f1b91d445509159e9 (patch)
tree5261c9d9c168f4f8351e1855f080d0688889e751 /libs/ardour/midi_track.cc
parente3241a03cf3d3d4cc09c125340444c6f72e0346b (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.cc24
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