fix a bunch of memory leaks
[ardour.git] / libs / ardour / midi_track.cc
index 579e54df3a38b15e191b4006ce277f36b2cd78c3..3866eb4d80844f4790bbb418725911a69736d4a3 100644 (file)
@@ -80,13 +80,7 @@ MidiTrack::init ()
 boost::shared_ptr<Diskstream>
 MidiTrack::create_diskstream ()
 {
-       MidiDiskstream::Flag dflags = MidiDiskstream::Flag (0);
-
-       if (_flags & Auditioner) {
-               dflags = MidiDiskstream::Flag (dflags | MidiDiskstream::Hidden);
-       } else {
-               dflags = MidiDiskstream::Flag (dflags | MidiDiskstream::Recordable);
-       }
+       MidiDiskstream::Flag dflags = MidiDiskstream::Flag (MidiDiskstream::Recordable);
 
        assert(_mode != Destructive);
 
@@ -320,7 +314,7 @@ MidiTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame
        if (!lm.locked()) {
                boost::shared_ptr<MidiDiskstream> diskstream = midi_diskstream();
                framecnt_t playback_distance = diskstream->calculate_playback_distance(nframes);
-               if (can_internal_playback_seek(std::llabs(playback_distance))) {
+               if (can_internal_playback_seek(llabs(playback_distance))) {
                        /* TODO should declick, and/or note-off */
                        internal_playback_seek(playback_distance);
                }
@@ -553,7 +547,7 @@ MidiTrack::write_out_of_band_data (BufferSet& bufs, framepos_t /*start*/, framep
 
 int
 MidiTrack::export_stuff (BufferSet& /*bufs*/, framepos_t /*start_frame*/, framecnt_t /*nframes*/, 
-                        boost::shared_ptr<Processor> /*endpoint*/, bool /*include_endpoint*/, bool /*forexport*/)
+                        boost::shared_ptr<Processor> /*endpoint*/, bool /*include_endpoint*/, bool /*for_export*/, bool /*for_freeze*/)
 {
        return -1;
 }
@@ -628,6 +622,24 @@ MidiTrack::write_immediate_event(size_t size, const uint8_t* buf)
        return (_immediate_events.write(0, type, size, buf) == size);
 }
 
+void
+MidiTrack::set_parameter_automation_state (Evoral::Parameter param, AutoState state)
+{
+       switch (param.type()) {
+       case MidiCCAutomation:
+       case MidiPgmChangeAutomation:
+       case MidiPitchBenderAutomation:
+       case MidiChannelPressureAutomation:
+       case MidiSystemExclusiveAutomation:
+               /* The track control for MIDI parameters is for immediate events to act
+                  as a control surface, write/touch for them is not currently
+                  supported. */
+               return;
+       default:
+               Automatable::set_parameter_automation_state(param, state);
+       }
+}
+
 void
 MidiTrack::MidiControl::set_value(double val)
 {