projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add VCA::full_name() which returns "VCA %n" : VCA %n" by default and "VCA %n : user...
[ardour.git]
/
libs
/
ardour
/
midi_region.cc
diff --git
a/libs/ardour/midi_region.cc
b/libs/ardour/midi_region.cc
index abaf6d348455e96cf0593129f9741bad8a22641a..7511aadce86b6631665c7a20ca2404eec664ee14 100644
(file)
--- a/
libs/ardour/midi_region.cc
+++ b/
libs/ardour/midi_region.cc
@@
-109,9
+109,11
@@
MidiRegion::MidiRegion (boost::shared_ptr<const MidiRegion> other, frameoffset_t
{
if (offset != 0) {
_start_beats = (_session.tempo_map().exact_qn_at_frame (other->_position + offset, sub_num) - other->_quarter_note) + other->_start_beats;
{
if (offset != 0) {
_start_beats = (_session.tempo_map().exact_qn_at_frame (other->_position + offset, sub_num) - other->_quarter_note) + other->_start_beats;
+ update_length_beats (sub_num);
+ /* we've potentially shifted _start_beats, now reset _start frames to match */
+ _start = _session.tempo_map().frames_between_quarter_notes (_quarter_note - _start_beats, _quarter_note);
}
}
- update_length_beats (sub_num);
register_properties ();
assert(_name.val().find("/") == string::npos);
register_properties ();
assert(_name.val().find("/") == string::npos);
@@
-178,10
+180,18
@@
MidiRegion::clone (boost::shared_ptr<MidiSource> newsrc) const
Evoral::Beats const bend = bfc.from (_start + _length);
{
Evoral::Beats const bend = bfc.from (_start + _length);
{
+ boost::shared_ptr<MidiSource> ms = midi_source(0);
+ Source::Lock lm (ms->mutex());
+
+ if (!ms->model()) {
+ ms->load_model (lm);
+ }
+
/* Lock our source since we'll be reading from it. write_to() will
/* Lock our source since we'll be reading from it. write_to() will
- take a lock on newsrc. */
- Source::Lock lm (midi_source(0)->mutex());
- if (midi_source(0)->write_to (lm, newsrc, bbegin, bend)) {
+ take a lock on newsrc.
+ */
+
+ if (ms->write_to (lm, newsrc, bbegin, bend)) {
return boost::shared_ptr<MidiRegion> ();
}
}
return boost::shared_ptr<MidiRegion> ();
}
}