diff --git a/libs/ardour/ardour/midi_region.h b/libs/ardour/ardour/midi_region.h index 3b75e29bbb..16c7e2d113 100644 --- a/libs/ardour/ardour/midi_region.h +++ b/libs/ardour/ardour/midi_region.h @@ -57,6 +57,7 @@ class MidiStateTracker; class Playlist; class Route; class Session; +class ThawList; template class MidiRingBuffer; @@ -70,7 +71,7 @@ class LIBARDOUR_API MidiRegion : public Region bool do_export (std::string path) const; boost::shared_ptr clone (std::string path = std::string()) const; - boost::shared_ptr clone (boost::shared_ptr) const; + boost::shared_ptr clone (boost::shared_ptr, ThawList* tl = 0) const; boost::shared_ptr midi_source (uint32_t n=0) const; diff --git a/libs/ardour/midi_playlist.cc b/libs/ardour/midi_playlist.cc index 1d385fc017..1724af59f2 100644 --- a/libs/ardour/midi_playlist.cc +++ b/libs/ardour/midi_playlist.cc @@ -247,7 +247,7 @@ MidiPlaylist::_split_region (boost::shared_ptr region, const MusicSample since it supplies that offset to the Region constructor, which is necessary to get audio region gain envelopes right. */ - left = RegionFactory::create (region, MusicSample (0, 0), plist, true); + left = RegionFactory::create (region, MusicSample (0, 0), plist, true, &thawlist); } RegionFactory::region_name (after_name, region->name(), false); @@ -263,7 +263,7 @@ MidiPlaylist::_split_region (boost::shared_ptr region, const MusicSample plist.add (Properties::layer, region->layer ()); /* same note as above */ - right = RegionFactory::create (region, before, plist, true); + right = RegionFactory::create (region, before, plist, true, &thawlist); } add_region_internal (left, region->position(), thawlist, 0, region->quarter_note(), true); diff --git a/libs/ardour/midi_region.cc b/libs/ardour/midi_region.cc index fa963fefbd..8e3444b1e5 100644 --- a/libs/ardour/midi_region.cc +++ b/libs/ardour/midi_region.cc @@ -49,6 +49,7 @@ #include "ardour/session.h" #include "ardour/source_factory.h" #include "ardour/tempo.h" +#include "ardour/thawlist.h" #include "ardour/types.h" #include "ardour/evoral_types_convert.h" @@ -180,7 +181,7 @@ MidiRegion::clone (string path) const } boost::shared_ptr -MidiRegion::clone (boost::shared_ptr newsrc) const +MidiRegion::clone (boost::shared_ptr newsrc, ThawList* tl) const { BeatsSamplesConverter bfc (_session.tempo_map(), _position); Temporal::Beats const bbegin = bfc.from (_start); @@ -215,7 +216,7 @@ MidiRegion::clone (boost::shared_ptr newsrc) const plist.add (Properties::length_beats, _length_beats); plist.add (Properties::layer, 0); - boost::shared_ptr ret (boost::dynamic_pointer_cast (RegionFactory::create (newsrc, plist, true))); + boost::shared_ptr ret (boost::dynamic_pointer_cast (RegionFactory::create (newsrc, plist, true, tl))); ret->set_quarter_note (quarter_note()); return ret; diff --git a/libs/ardour/region_factory.cc b/libs/ardour/region_factory.cc index 851f877607..8933816072 100644 --- a/libs/ardour/region_factory.cc +++ b/libs/ardour/region_factory.cc @@ -73,7 +73,7 @@ RegionFactory::create (boost::shared_ptr region, bool announce, bo boost::shared_ptr source = mr->session ().create_midi_source_for_session (base); source->set_ancestor_name (mr->sources ().front ()->name ()); - ret = mr->clone (source); + ret = mr->clone (source, tl); } else { ret = boost::shared_ptr (new MidiRegion (mr, MusicSample (0, 0))); }