summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_region.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-06-18 23:24:05 +1000
committernick_m <mainsbridge@gmail.com>2016-07-10 02:18:36 +1000
commit0e63fa65b5bf96040e752386083f80403042a6e6 (patch)
tree3a250d21abe924e613be947b739af396cb6facca /libs/ardour/midi_region.cc
parent93c24e4433d69fe1de28d4d2ed2045aa7cb3596b (diff)
Remove frame conversion for MidiRegionView::note_in_region_range(), speed up tempo dilation
Diffstat (limited to 'libs/ardour/midi_region.cc')
-rw-r--r--libs/ardour/midi_region.cc17
1 files changed, 13 insertions, 4 deletions
diff --git a/libs/ardour/midi_region.cc b/libs/ardour/midi_region.cc
index 035c17c9de..ce473c162d 100644
--- a/libs/ardour/midi_region.cc
+++ b/libs/ardour/midi_region.cc
@@ -197,16 +197,25 @@ MidiRegion::set_length_internal (framecnt_t len, const int32_t& sub_num)
void
MidiRegion::update_after_tempo_map_change (bool /* send */)
{
+ const framepos_t old_pos = _position;
+ const framepos_t old_length = _length;
+ const framepos_t old_start = _start;
+
Region::update_after_tempo_map_change (false);
/* _start has now been updated. */
_length = _session.tempo_map().frame_at_beat (beat() + _length_beats.val().to_double()) - _position;
PropertyChange s_and_l;
- s_and_l.add (Properties::start);
- s_and_l.add (Properties::length);
- s_and_l.add (Properties::length_beats);
- s_and_l.add (Properties::position);
+ if (old_start != _start) {
+ s_and_l.add (Properties::start);
+ }
+ if (old_length != _length) {
+ s_and_l.add (Properties::length);
+ }
+ if (old_pos != _position) {
+ s_and_l.add (Properties::position);
+ }
send_change (s_and_l);
}