]> git.donarmstrong.com Git - lilypond.git/commitdiff
plug midi memory leaks.
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 16 Jan 2007 22:41:45 +0000 (23:41 +0100)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 16 Jan 2007 22:41:45 +0000 (23:41 +0100)
lily/audio-staff.cc
lily/include/midi-walker.hh
lily/midi-item.cc
lily/midi-walker.cc

index 7ddd646b53c7dd7e317594b7faa6d7854582fe20..6871ab56b442ad8b6275d5bd227f4d3f9688fdb1 100644 (file)
@@ -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;
index ee523e5faa850a0dbc71d5daf3d32cbd101b80d4..604cf70072e2a98eb870be9c531bf975d37b380c 100644 (file)
@@ -46,6 +46,8 @@ private:
   vector<Audio_item*> items_;
   PQueue<Midi_note_event> stop_note_queue;
   int last_tick_;
+
+  vector<Midi_item*> midi_items_;
 };
 
 #endif // MIDI_WALKER_HH
index ee05d4ed58dcabbf614703854bb542ba4c2c41f6..0e68e03ded9d7a223b6ab7a7e27f1060df4b11b3 100644 (file)
@@ -40,12 +40,10 @@ Midi_item::get_midi (Audio_item *a)
   else if (Audio_time_signature *i = dynamic_cast<Audio_time_signature *> (a))
     return new Midi_time_signature (i);
   else if (Audio_text *i = dynamic_cast<Audio_text *> (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;
 }
 
index aa491bc930ddf8e202010b2a8ddf30df3b967a98..48c4cf8723658aa6a4eb37ecd9b580f4500c8504 100644 (file)
@@ -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);
     }
 }