Logarithmic note seek for Sequence iterator.
authorDavid Robillard <d@drobilla.net>
Mon, 19 Oct 2009 16:23:08 +0000 (16:23 +0000)
committerDavid Robillard <d@drobilla.net>
Mon, 19 Oct 2009 16:23:08 +0000 (16:23 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@5803 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/evoral/src/Sequence.cpp

index 81d515afbfda0d73e82e30b847b3fc0d72abe92d..e27668e626021b5a5cdd0a4903948d5ed872c70b 100644 (file)
@@ -100,13 +100,8 @@ Sequence<Time>::const_iterator::const_iterator(const Sequence<Time>& seq, Time t
        seq.read_lock();
 
        // Find first note which begins after t
-       for (typename Sequence<Time>::Notes::const_iterator i = seq.notes().begin();
-                       i != seq.notes().end(); ++i) {
-               if ((*i)->time() >= t) {
-                       _note_iter = i;
-                       break;
-               }
-       }
+       boost::shared_ptr< Note<Time> > search_note(new Note<Time>(0, t, 0, 0, 0));
+       _note_iter = seq.notes().lower_bound(search_note);
        assert(_note_iter == seq.notes().end() || (*_note_iter)->time() >= t);
 
        // Find first sysex event after t