diff options
Diffstat (limited to 'gtk2_ardour/ghostregion.cc')
-rw-r--r-- | gtk2_ardour/ghostregion.cc | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/gtk2_ardour/ghostregion.cc b/gtk2_ardour/ghostregion.cc index e024a1a6e7..ba8ee05a46 100644 --- a/gtk2_ardour/ghostregion.cc +++ b/gtk2_ardour/ghostregion.cc @@ -179,6 +179,7 @@ MidiGhostRegion::MidiGhostRegion(RegionView& rv, TimeAxisView& source_tv, double initial_unit_pos) : GhostRegion(rv, tv.ghost_group(), tv, source_tv, initial_unit_pos) + , _note_group (new ArdourCanvas::Container (group)) , _optimization_iterator(events.end()) { _outline = UIConfiguration::instance().color ("ghost track midi outline"); @@ -200,6 +201,7 @@ MidiGhostRegion::MidiGhostRegion(RegionView& rv, msv.trackview(), source_tv, initial_unit_pos) + , _note_group (new ArdourCanvas::Container (group)) , _optimization_iterator(events.end()) { _outline = UIConfiguration::instance().color ("ghost track midi outline"); @@ -324,7 +326,7 @@ MidiGhostRegion::update_contents_height () void MidiGhostRegion::add_note (NoteBase* n) { - GhostEvent* event = new GhostEvent (n, group); + GhostEvent* event = new GhostEvent (n, _note_group); events.insert (make_pair (n->note(), event)); event->item->set_fill_color (UIConfiguration::instance().color_mod(n->base_color(), "ghost track midi fill")); @@ -356,12 +358,9 @@ MidiGhostRegion::add_note (NoteBase* n) void MidiGhostRegion::clear_events() { - _optimization_iterator = events.begin(); - - while (_optimization_iterator != events.end()) { - delete (*_optimization_iterator).second; - _optimization_iterator = events.erase (_optimization_iterator); - } + _note_group->clear (true); + events.clear (); + _optimization_iterator = events.end(); } /** Update the x positions of our representation of a parent's note. |