summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-08-13 02:23:07 +1000
committernick_m <mainsbridge@gmail.com>2016-08-14 03:04:53 +1000
commit5c2ccc4f3eeccaedf8399e0c80d0394cf2b4f132 (patch)
tree3725e8f5b4abf8c0a2dc1f277ba8e5e9999b5561 /gtk2_ardour
parent23d1d1f55bdb6c1e4418284afdf50c74dc1e25ed (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')
-rw-r--r--gtk2_ardour/editor_rulers.cc4
-rw-r--r--gtk2_ardour/editor_tempodisplay.cc2
-rw-r--r--gtk2_ardour/step_editor.cc2
3 files changed, 4 insertions, 4 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);
diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc
index 722490c26e..9c562a4d86 100644
--- a/gtk2_ardour/editor_tempodisplay.cc
+++ b/gtk2_ardour/editor_tempodisplay.cc
@@ -279,7 +279,7 @@ Editor::compute_current_bbt_points (std::vector<TempoMap::BBTPoint>& grid, frame
/* prevent negative values of leftmost from creeping into tempomap
*/
- const double lower_beat = floor (_session->tempo_map().beat_at_frame (leftmost)) - 1.0;
+ const double lower_beat = floor (max (0.0, _session->tempo_map().beat_at_frame (leftmost))) - 1.0;
_session->tempo_map().get_grid (grid, max (_session->tempo_map().frame_at_beat (lower_beat), (framepos_t) 0), rightmost);
}
diff --git a/gtk2_ardour/step_editor.cc b/gtk2_ardour/step_editor.cc
index 3ea3bb4ccd..c45c0f4461 100644
--- a/gtk2_ardour/step_editor.cc
+++ b/gtk2_ardour/step_editor.cc
@@ -117,7 +117,7 @@ StepEditor::prepare_step_edit_region ()
const Meter& m = _mtv.session()->tempo_map().meter_at_frame (step_edit_insert_position);
- double baf = _mtv.session()->tempo_map().beat_at_frame (step_edit_insert_position);
+ double baf = max (0.0, _mtv.session()->tempo_map().beat_at_frame (step_edit_insert_position));
double next_bar_in_beats = baf + m.divisions_per_bar();
framecnt_t next_bar_pos = _mtv.session()->tempo_map().frame_at_beat (next_bar_in_beats);
framecnt_t len = next_bar_pos - step_edit_insert_position;