mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-08 07:45:00 +01:00
temporal: fix ::get_grid() crash condition
We cannot call TempoMetric::superclock_at (BBT_Time) if the BBT time is beyond the range of the current TempoMetric. We must discover that *before* we make that call, not as part of the test to see if we've exceeded the range.
This commit is contained in:
parent
5e9e21911c
commit
39c324b620
1 changed files with 15 additions and 4 deletions
|
|
@ -2090,13 +2090,24 @@ TempoMap::get_grid (TempoMapPoints& ret, superclock_t start, superclock_t end, u
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEBUG_TRACE (DEBUG::Grid, string_compose ("pre-check overrun of next point with bbt @ %1 audio %2 point %3\n", bbt, start, *p));
|
||||||
|
|
||||||
|
bool reset = false;
|
||||||
|
|
||||||
|
if (!next_point_is_bbt_marker && bbt >= p->bbt()) {
|
||||||
|
DEBUG_TRACE (DEBUG::Grid, string_compose ("we've reached/passed the next point via BBT, BBT %1 audio %2 point %3\n", bbt, start, *p));
|
||||||
|
reset = true;
|
||||||
|
} else {
|
||||||
start = metric.superclock_at (bbt);
|
start = metric.superclock_at (bbt);
|
||||||
|
if (start >= p->sclock()) {
|
||||||
|
DEBUG_TRACE (DEBUG::Grid, string_compose ("we've reached/passed the next point via sclock, BBT %1 audio %2 point %3\n", bbt, start, *p));
|
||||||
|
reset = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DEBUG_TRACE (DEBUG::Grid, string_compose ("check overrun of next point with bbt @ %1 audio %2 point %3\n", bbt, start, *p));
|
DEBUG_TRACE (DEBUG::Grid, string_compose ("check overrun of next point, reset required ? %4 with bbt @ %1 audio %2 point %3\n", bbt, start, *p, (reset ? "YES" : "NO")));
|
||||||
|
|
||||||
if ((!next_point_is_bbt_marker && bbt >= p->bbt()) || (start >= p->sclock())) {
|
if (reset) {
|
||||||
|
|
||||||
DEBUG_TRACE (DEBUG::Grid, string_compose ("we've reached/passed the next point, BBT %1 audio %2 point %3\n", bbt, start, *p));
|
|
||||||
|
|
||||||
/* reset our sense of "now" to be wherever the point is */
|
/* reset our sense of "now" to be wherever the point is */
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue