From 7c6bba557e7d5ab6b32d7cd17c947e76cb1c1172 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 16 Jan 2007 23:41:45 +0100 Subject: [PATCH] plug midi memory leaks. --- lily/audio-staff.cc | 5 +++-- lily/include/midi-walker.hh | 2 ++ lily/midi-item.cc | 2 -- lily/midi-walker.cc | 8 ++++++++ 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/lily/audio-staff.cc b/lily/audio-staff.cc index 7ddd646b53..6871ab56b4 100644 --- a/lily/audio-staff.cc +++ b/lily/audio-staff.cc @@ -28,8 +28,9 @@ Audio_staff::output (Midi_stream &midi_stream, int channel) { Midi_track midi_track; midi_track.number_ = channel; - - for (Midi_walker i (this, &midi_track, channel); i.ok (); i++) + + Midi_walker i (this, &midi_track, channel); + for (; i.ok (); i++) i.process (); midi_stream << midi_track; diff --git a/lily/include/midi-walker.hh b/lily/include/midi-walker.hh index ee523e5faa..604cf70072 100644 --- a/lily/include/midi-walker.hh +++ b/lily/include/midi-walker.hh @@ -46,6 +46,8 @@ private: vector items_; PQueue stop_note_queue; int last_tick_; + + vector midi_items_; }; #endif // MIDI_WALKER_HH diff --git a/lily/midi-item.cc b/lily/midi-item.cc index ee05d4ed58..0e68e03ded 100644 --- a/lily/midi-item.cc +++ b/lily/midi-item.cc @@ -40,12 +40,10 @@ Midi_item::get_midi (Audio_item *a) else if (Audio_time_signature *i = dynamic_cast (a)) return new Midi_time_signature (i); else if (Audio_text *i = dynamic_cast (a)) - //return i->text_string_.length () ? new Midi_text (i) : 0; return new Midi_text (i); else assert (0); - // isn't C++ grand? return 0; } diff --git a/lily/midi-walker.cc b/lily/midi-walker.cc index aa491bc930..48c4cf8723 100644 --- a/lily/midi-walker.cc +++ b/lily/midi-walker.cc @@ -54,6 +54,9 @@ Midi_walker::Midi_walker (Audio_staff *audio_staff, Midi_track *track, Midi_walker::~Midi_walker () { do_stop_notes (last_tick_ + 384); + + for (vsize i = 0; i < midi_items_.size (); i++) + delete midi_items_[i]; } /** @@ -102,6 +105,8 @@ Midi_walker::do_start_note (Midi_note *note) if (play_start) output_event (ptr->audio_column_->ticks (), note); + + midi_items_.push_back (e.val); } } @@ -168,6 +173,9 @@ Midi_walker::process () } else output_event (audio->audio_column_->ticks (), midi); + + + midi_items_.push_back (midi); } } -- 2.39.2