summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_region_view.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-10-19 15:23:42 +0000
committerDavid Robillard <d@drobilla.net>2009-10-19 15:23:42 +0000
commitcb8407d26fb8863b2434aa6006da32c3f732e663 (patch)
tree78d697608d1e13a37ec5de6046b15d6f3ad10701 /gtk2_ardour/midi_region_view.cc
parent7b94110c545415af8437fc6631e7663ebb5c28f3 (diff)
Use set over vector for Sequence::Notes, for logarithmic search by time.
git-svn-id: svn://localhost/ardour2/branches/3.0@5798 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/midi_region_view.cc')
-rw-r--r--gtk2_ardour/midi_region_view.cc19
1 files changed, 7 insertions, 12 deletions
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc
index d76c173af1..40f267717b 100644
--- a/gtk2_ardour/midi_region_view.cc
+++ b/gtk2_ardour/midi_region_view.cc
@@ -2368,17 +2368,12 @@ MidiRegionView::cut_copy_clear (Editing::CutCopyOp op)
MidiCutBuffer*
MidiRegionView::selection_as_cut_buffer () const
{
- NoteList notes;
+ Notes notes;
for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) {
- notes.push_back (boost::shared_ptr<NoteType> (new NoteType (*((*i)->note().get()))));
+ notes.insert (boost::shared_ptr<NoteType> (new NoteType (*((*i)->note().get()))));
}
- /* sort them into time order */
-
- Evoral::Sequence<Evoral::MusicalTime>::LaterNoteComparator cmp;
- sort (notes.begin(), notes.end(), cmp);
-
MidiCutBuffer* cb = new MidiCutBuffer (trackview.session());
cb->set (notes);
@@ -2399,16 +2394,16 @@ MidiRegionView::paste (nframes64_t pos, float times, const MidiCutBuffer& mcb)
Evoral::MusicalTime duration;
Evoral::MusicalTime end_point;
- duration = mcb.notes().back()->end_time() - mcb.notes().front()->time();
+ duration = (*mcb.notes().rbegin())->end_time() - (*mcb.notes().begin())->time();
paste_pos_beats = frames_to_beats (pos - _region->position());
- beat_delta = mcb.notes().front()->time() - paste_pos_beats;
+ beat_delta = (*mcb.notes().begin())->time() - paste_pos_beats;
paste_pos_beats = 0;
_selection.clear ();
for (int n = 0; n < (int) times; ++n) {
- for (NoteList::const_iterator i = mcb.notes().begin(); i != mcb.notes().end(); ++i) {
+ for (Notes::const_iterator i = mcb.notes().begin(); i != mcb.notes().end(); ++i) {
boost::shared_ptr<NoteType> copied_note (new NoteType (*((*i).get())));
copied_note->set_time (paste_pos_beats + copied_note->time() - beat_delta);
@@ -2516,13 +2511,13 @@ MidiRegionView::goto_previous_note ()
}
void
-MidiRegionView::selection_as_notelist (NoteList& selected)
+MidiRegionView::selection_as_notelist (Notes& selected)
{
time_sort_events ();
for (Events::iterator i = _events.begin(); i != _events.end(); ++i) {
if ((*i)->selected()) {
- selected.push_back ((*i)->note());
+ selected.insert ((*i)->note());
}
}
}