temporal: fix issue with removal of tempo, meter and bartime points
The correct algorithm is to traverse the type-specific list of points, find the point (if any) whose time matches that of the argument (because we do not allow multiple points of the same type at the same time), and then use that discovered point from the _points list. This approach is required because the actual argument may no longer be in the tempo map (due to a change made by another thread). The lack of sync, however, needs investigation.
This commit is contained in:
parent
4d5cf43789
commit
8a59f3fe8e
@ -943,7 +943,7 @@ TempoMap::remove_tempo (TempoPoint const & tp)
|
||||
return;
|
||||
}
|
||||
_tempos.erase (t);
|
||||
remove_point (tp);
|
||||
remove_point (*t);
|
||||
reset_starting_at (sc);
|
||||
}
|
||||
|
||||
@ -1018,7 +1018,7 @@ TempoMap::remove_bartime (MusicTimePoint const & tp)
|
||||
}
|
||||
|
||||
_bartimes.erase (m);
|
||||
remove_point (tp);
|
||||
remove_point (*m);
|
||||
reset_starting_at (sc);
|
||||
}
|
||||
|
||||
@ -1484,7 +1484,7 @@ TempoMap::remove_meter (MeterPoint const & mp)
|
||||
return;
|
||||
}
|
||||
_meters.erase (m);
|
||||
remove_point (mp);
|
||||
remove_point (*m);
|
||||
reset_starting_at (sc);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user