diff options
author | nick_m <mainsbridge@gmail.com> | 2016-06-07 02:12:04 +1000 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2016-06-07 02:12:04 +1000 |
commit | 92fdf7deda1dfd4eb73eba1182fcbc805e86548e (patch) | |
tree | e733263e6f8aac001512b86ffac52f760eeef366 /libs/ardour/region.cc | |
parent | 20d85384c111771701a15e533df5a8b3aa96c544 (diff) |
Region always sets position before length.
Diffstat (limited to 'libs/ardour/region.cc')
-rw-r--r-- | libs/ardour/region.cc | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc index 105aa3af59..4f83590a98 100644 --- a/libs/ardour/region.cc +++ b/libs/ardour/region.cc @@ -326,6 +326,7 @@ Region::Region (boost::shared_ptr<const Region> other, frameoffset_t offset) , _last_length (other->_last_length) , _last_position(other->_last_position) \ , _first_edit (EditChangesNothing) + , _beat (0.0) , _layer (other->_layer) { register_properties (); @@ -333,7 +334,7 @@ Region::Region (boost::shared_ptr<const Region> other, frameoffset_t offset) /* override state that may have been incorrectly inherited from the other region */ - _position = 0; + _position = other->_position + offset; _locked = false; _whole_file = false; _hidden = false; @@ -644,20 +645,18 @@ Region::set_position_internal (framepos_t pos, bool allow_bbt_recompute) if (_position != pos) { _position = pos; + if (allow_bbt_recompute) { + recompute_position_from_lock_style (); + } /* check that the new _position wouldn't make the current length impossible - if so, change the length. XXX is this the right thing to do? */ - if (max_framepos - _length < _position) { _last_length = _length; _length = max_framepos - _position; } - - if (allow_bbt_recompute) { - recompute_position_from_lock_style (); - } } } @@ -924,11 +923,6 @@ Region::trim_to_internal (framepos_t position, framecnt_t length) PropertyChange what_changed; - if (_start != new_start) { - set_start_internal (new_start); - what_changed.add (Properties::start); - } - /* Set position before length, otherwise for MIDI regions this bad thing happens: * 1. we call set_length_internal; length in beats is computed using the region's current * (soon-to-be old) position @@ -945,6 +939,11 @@ Region::trim_to_internal (framepos_t position, framecnt_t length) what_changed.add (Properties::position); } + if (_start != new_start) { + set_start_internal (new_start); + what_changed.add (Properties::start); + } + if (_length != length) { if (!property_changes_suspended()) { _last_length = _length; |