diff options
author | nick_m <mainsbridge@gmail.com> | 2016-08-13 02:23:07 +1000 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2016-08-14 03:04:53 +1000 |
commit | 5c2ccc4f3eeccaedf8399e0c80d0394cf2b4f132 (patch) | |
tree | 3725e8f5b4abf8c0a2dc1f277ba8e5e9999b5561 /gtk2_ardour/editor_rulers.cc | |
parent | 23d1d1f55bdb6c1e4418284afdf50c74dc1e25ed (diff) |
Allow negative return in TempoMap::beat_at_frame() and its exact_ variant.
- audio-locked midi regions can be start-trimmed properly
when close to 1|1|0
- a midi region placed before the first meter
will continue the tempo curve and first meter.
Only a couple of callers require change, as bbt_at_beat() already
deals with this.
Diffstat (limited to 'gtk2_ardour/editor_rulers.cc')
-rw-r--r-- | gtk2_ardour/editor_rulers.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index 868b006900..6c9e45abc8 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -1017,14 +1017,14 @@ Editor::compute_bbt_ruler_scale (std::vector<ARDOUR::TempoMap::BBTPoint>& grid, std::vector<TempoMap::BBTPoint>::const_iterator i; Timecode::BBT_Time lower_beat, upper_beat; // the beats at each end of the ruler - double floor_lower_beat = floor(_session->tempo_map().beat_at_frame (lower)); + double floor_lower_beat = floor(max (0.0, _session->tempo_map().beat_at_frame (lower))); if (floor_lower_beat < 0.0) { floor_lower_beat = 0.0; } const framecnt_t beat_before_lower_pos = _session->tempo_map().frame_at_beat (floor_lower_beat); - const framecnt_t beat_after_upper_pos = _session->tempo_map().frame_at_beat (floor (_session->tempo_map().beat_at_frame (upper)) + 1.0); + const framecnt_t beat_after_upper_pos = _session->tempo_map().frame_at_beat (floor (max (0.0, _session->tempo_map().beat_at_frame (upper))) + 1.0); _session->bbt_time (beat_before_lower_pos, lower_beat); _session->bbt_time (beat_after_upper_pos, upper_beat); |