diff options
author | Florian Jung <flo@windfisch.org> | 2013-08-16 23:04:08 +0200 |
---|---|---|
committer | Florian Jung <flo@windfisch.org> | 2013-08-16 23:04:08 +0200 |
commit | 4933ccfe7552dc5dbb2921f6583bbeb92dd144b4 (patch) | |
tree | aca8f234f17bbe94fc78c4d1cedd8e8649d2dd1f /muse2/muse/steprec.cpp | |
parent | be3b3fef8d787f167b57ebfd700717a02c38570d (diff) |
Parts have their own, non-shared EventList (still WIP!)
removed refcounting in Eventlist
Part::events() is now a const EventList&
chaining parts now a Part:: member function
made Track::events, ::mpevents public instead of using an insane reference-accessor
TODO: need a grouping indicator of clones (like the eventlist pointer was used for)
Diffstat (limited to 'muse2/muse/steprec.cpp')
-rw-r--r-- | muse2/muse/steprec.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/muse2/muse/steprec.cpp b/muse2/muse/steprec.cpp index 723fe650..466c4e21 100644 --- a/muse2/muse/steprec.cpp +++ b/muse2/muse/steprec.cpp @@ -76,10 +76,10 @@ void StepRec::record(Part* part, int pitch, int len, int step, int velo, bool ct chord_timer->stop(); // extend len of last note? - EventList* events = part->events(); + const EventList& events = part->events(); if (ctrl) { - for (iEvent i = events->begin(); i != events->end(); ++i) + for (iEvent i = events.begin(); i != events.end(); ++i) { Event ev = i->second; if (ev.isNote() && ev.pitch() == pitch && ((ev.tick() + ev.lenTick() + part->tick()) == tick)) @@ -106,8 +106,8 @@ void StepRec::record(Part* part, int pitch, int len, int step, int velo, bool ct // if we would find a note after part->lenTick(), the above "if" // avoids this. this has to be avoided because then part->hasHiddenEvents() is true // which results in forbidding any action beyond its end - EventRange range = events->equal_range(tick - part->tick()); - for (iEvent i = range.first; i != range.second; ++i) + EventRange range = events.equal_range(tick - part->tick()); + for (ciEvent i = range.first; i != range.second; ++i) { Event ev = i->second; if (ev.isNote() && ev.pitch() == pitch) @@ -161,18 +161,18 @@ void StepRec::record(Part* part, int pitch, int len, int step, int velo, bool ct // extend len of last note(s) using std::set; - set<Event*> extend_set; - EventList* events = part->events(); - for (iEvent i = events->begin(); i != events->end(); ++i) + set<const Event*> extend_set; + const EventList& events = part->events(); + for (iEvent i = events.begin(); i != events.end(); ++i) { Event& ev = i->second; if (ev.isNote() && note_held_down[ev.pitch()] && ((ev.tick() + ev.lenTick() + part->tick()) == tick)) extend_set.insert(&ev); } - for (set<Event*>::iterator it=extend_set.begin(); it!=extend_set.end(); it++) + for (set<const Event*>::iterator it=extend_set.begin(); it!=extend_set.end(); it++) { - Event& ev=**it; + const Event& ev=**it; Event e = ev.clone(); e.setLenTick(ev.lenTick() + len); operations.push_back(UndoOp(UndoOp::ModifyEvent,e, ev, part, false, false)); |