diff options
Diffstat (limited to 'libs/ardour/midi_track.cc')
-rw-r--r-- | libs/ardour/midi_track.cc | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index f6d0a22019..a18d0c20ce 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -619,14 +619,21 @@ MidiTrack::unfreeze () FreezeChange (); /* EMIT SIGNAL */ } -void +int MidiTrack::set_mode (TrackMode m) { - if (_diskstream) { - if (_mode != m) { - _mode = m; - _diskstream->set_destructive (m == Destructive); - ModeChanged(); + assert(_diskstream); + + if (m != _mode) { + + if (_diskstream->set_destructive (m == Destructive)) { + return -1; } + + _mode = m; + + TrackModeChanged (); /* EMIT SIGNAL */ } + + return 0; } |