Consolidate notifications when MidiRegion changes length due to position change.
This commit is contained in:
parent
01812f53c3
commit
f0f2e3bb71
|
@ -192,10 +192,6 @@ void
|
||||||
MidiRegion::set_length_internal (framecnt_t len)
|
MidiRegion::set_length_internal (framecnt_t len)
|
||||||
{
|
{
|
||||||
Region::set_length_internal (len);
|
Region::set_length_internal (len);
|
||||||
/* XX this seems wrong. we asked to set the length in
|
|
||||||
frames without requesting a new beat.
|
|
||||||
may cause beat drift due to frame rounding.
|
|
||||||
*/
|
|
||||||
update_length_beats ();
|
update_length_beats ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,11 +225,10 @@ MidiRegion::set_position_internal (framepos_t pos, bool allow_bbt_recompute)
|
||||||
Region::set_position_internal (pos, allow_bbt_recompute);
|
Region::set_position_internal (pos, allow_bbt_recompute);
|
||||||
|
|
||||||
/* leave _length_beats alone, and change _length to reflect the state of things
|
/* 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
|
at the new position (tempo map may dictate a different number of frames).
|
||||||
*/
|
*/
|
||||||
BeatsFramesConverter converter (_session.tempo_map(), _position);
|
BeatsFramesConverter converter (_session.tempo_map(), _position);
|
||||||
Region::set_length_internal (converter.to (_length_beats));
|
Region::set_length_internal (converter.to (_length_beats));
|
||||||
send_change (Properties::length);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
framecnt_t
|
framecnt_t
|
||||||
|
|
|
@ -578,7 +578,19 @@ Region::set_position (framepos_t pos)
|
||||||
/* do this even if the position is the same. this helps out
|
/* do this even if the position is the same. this helps out
|
||||||
a GUI that has moved its representation already.
|
a GUI that has moved its representation already.
|
||||||
*/
|
*/
|
||||||
send_change (Properties::position);
|
PropertyChange p_and_l;
|
||||||
|
|
||||||
|
p_and_l.add (Properties::position);
|
||||||
|
/* Currently length change due to position change is only implemented
|
||||||
|
for MidiRegion (Region has no length in beats).
|
||||||
|
Notify a length change regardless (its more efficient for MidiRegions),
|
||||||
|
and when Region has a _length_beats we will need it here anyway).
|
||||||
|
*/
|
||||||
|
if (position_lock_style() == MusicTime) {
|
||||||
|
p_and_l.add (Properties::length);
|
||||||
|
}
|
||||||
|
|
||||||
|
send_change (p_and_l);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user