summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_region.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-10-01 11:28:09 +1000
committernick_m <mainsbridge@gmail.com>2016-10-01 11:28:09 +1000
commit48f48ccea82ad2976c3127d3694ddd6c7a3e7da2 (patch)
tree1ebfd2073f6216bdf08c2bff102a2bb6589f95e6 /libs/ardour/midi_region.cc
parentbc38f2c48969be068b93525bdbcce6c1ff4e1d7c (diff)
Add MidiRegion _start to the list of things we leave alone on session load.
Diffstat (limited to 'libs/ardour/midi_region.cc')
-rw-r--r--libs/ardour/midi_region.cc25
1 files changed, 13 insertions, 12 deletions
diff --git a/libs/ardour/midi_region.cc b/libs/ardour/midi_region.cc
index 644e473e03..abaef22e41 100644
--- a/libs/ardour/midi_region.cc
+++ b/libs/ardour/midi_region.cc
@@ -306,6 +306,11 @@ MidiRegion::set_position_internal (framepos_t pos, bool allow_bbt_recompute, con
{
Region::set_position_internal (pos, allow_bbt_recompute, sub_num);
+ /* don't clobber _start _length and _length_beats if session loading.*/
+ if (!_session.loading()) {
+ return;
+ }
+
/* set _start to new position in tempo map */
_start = _position - _session.tempo_map().frame_at_pulse (pulse() - (_start_beats.val().to_double() / 4.0));
@@ -314,16 +319,13 @@ MidiRegion::set_position_internal (framepos_t pos, bool allow_bbt_recompute, con
update_length_beats (sub_num);
}
- /* don't clobber _length and _length_beats if session loading.*/
- if (!_session.loading()) {
- if (position_lock_style() == AudioTime) {
- _length_beats = Evoral::Beats (_session.tempo_map().quarter_note_at_frame (_position + _length) - _session.tempo_map().quarter_note_at_frame (_position));
- } else {
- /* leave _length_beats alone, and change _length to reflect the state of things
- at the new position (tempo map may dictate a different number of frames).
- */
- Region::set_length_internal (_session.tempo_map().frame_at_pulse (pulse() + (_length_beats.val().to_double() / 4.0)) - _position, sub_num);
- }
+ if (position_lock_style() == AudioTime) {
+ _length_beats = Evoral::Beats (_session.tempo_map().quarter_note_at_frame (_position + _length) - _session.tempo_map().quarter_note_at_frame (_position));
+ } else {
+ /* leave _length_beats alone, and change _length to reflect the state of things
+ at the new position (tempo map may dictate a different number of frames).
+ */
+ Region::set_length_internal (_session.tempo_map().frame_at_pulse (pulse() + (_length_beats.val().to_double() / 4.0)) - _position, sub_num);
}
}
@@ -596,10 +598,9 @@ void
MidiRegion::set_start_internal (framecnt_t s, const int32_t sub_num)
{
Region::set_start_internal (s, sub_num);
-
if (position_lock_style() == AudioTime) {
set_start_beats_from_start_frames ();
- }
+ }
}
void