diff options
Diffstat (limited to 'libs/ardour/midi_diskstream.cc')
-rw-r--r-- | libs/ardour/midi_diskstream.cc | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/libs/ardour/midi_diskstream.cc b/libs/ardour/midi_diskstream.cc index 64f02b0ad9..84a209cd33 100644 --- a/libs/ardour/midi_diskstream.cc +++ b/libs/ardour/midi_diskstream.cc @@ -1021,7 +1021,7 @@ MidiDiskstream::finish_capture () void MidiDiskstream::set_record_enabled (bool yn) { - if (!recordable() || !_session.record_enabling_legal()) { + if (!recordable() || !_session.record_enabling_legal() || _io->n_ports().n_midi() == 0) { return; } @@ -1040,12 +1040,14 @@ MidiDiskstream::set_record_enabled (bool yn) } } -void -MidiDiskstream::engage_record_enable () +bool +MidiDiskstream::prep_record_enable () { - bool const rolling = _session.transport_speed() != 0.0f; + if (!recordable() || !_session.record_enabling_legal() || _io->n_ports().n_midi() == 0) { + return false; + } - g_atomic_int_set (&_record_enabled, 1); + bool const rolling = _session.transport_speed() != 0.0f; boost::shared_ptr<MidiPort> sp = _source_port.lock (); @@ -1054,13 +1056,17 @@ MidiDiskstream::engage_record_enable () } RecordEnableChanged (); /* EMIT SIGNAL */ + + return true; } -void -MidiDiskstream::disengage_record_enable () +bool +MidiDiskstream::prep_record_disable () { g_atomic_int_set (&_record_enabled, 0); RecordEnableChanged (); /* EMIT SIGNAL */ + + return true; } XMLNode& |