turn off relevant fade in/out before creating peakfiles for compound region sources
git-svn-id: svn://localhost/ardour2/branches/3.0@9596 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
@@ -106,7 +106,8 @@ public:
|
||||
void remove_dependents (boost::shared_ptr<Region> region);
|
||||
void copy_dependents (const std::vector<TwoRegions>&, boost::shared_ptr<Playlist>);
|
||||
|
||||
void pre_combine (std::vector<boost::shared_ptr<Region> >&, boost::shared_ptr<Region>);
|
||||
void pre_combine (std::vector<boost::shared_ptr<Region> >&);
|
||||
void post_combine (std::vector<boost::shared_ptr<Region> >&, boost::shared_ptr<Region>);
|
||||
void pre_uncombine (std::vector<boost::shared_ptr<Region> >&, boost::shared_ptr<Region>);
|
||||
|
||||
private:
|
||||
|
||||
@@ -390,7 +390,13 @@ public:
|
||||
framepos_t start;
|
||||
};
|
||||
|
||||
virtual void pre_combine (std::vector<boost::shared_ptr<Region> >&, boost::shared_ptr<Region>) {}
|
||||
/* this is called before we create a new compound region */
|
||||
virtual void pre_combine (std::vector<boost::shared_ptr<Region> >&) {}
|
||||
/* this is called before we create a new compound region */
|
||||
virtual void post_combine (std::vector<boost::shared_ptr<Region> >&, boost::shared_ptr<Region>) {}
|
||||
/* this is called before we remove a compound region and replace it
|
||||
with its constituent regions
|
||||
*/
|
||||
virtual void pre_uncombine (std::vector<boost::shared_ptr<Region> >&, boost::shared_ptr<Region>) {}
|
||||
};
|
||||
|
||||
|
||||
@@ -1083,10 +1083,31 @@ AudioPlaylist::copy_dependents (const vector<TwoRegions>& old_and_new, boost::sh
|
||||
}
|
||||
|
||||
void
|
||||
AudioPlaylist::pre_combine (vector<boost::shared_ptr<Region> >& originals, boost::shared_ptr<Region> compound_region)
|
||||
AudioPlaylist::pre_combine (vector<boost::shared_ptr<Region> >& copies)
|
||||
{
|
||||
/* sort the originals into time order */
|
||||
RegionSortByPosition cmp;
|
||||
boost::shared_ptr<AudioRegion> ar;
|
||||
|
||||
sort (copies.begin(), copies.end(), cmp);
|
||||
|
||||
ar = boost::dynamic_pointer_cast<AudioRegion> (copies.front());
|
||||
|
||||
/* copy the fade in of the first into the compound region */
|
||||
|
||||
if (ar) {
|
||||
ar->set_fade_in_active (false);
|
||||
}
|
||||
|
||||
ar = boost::dynamic_pointer_cast<AudioRegion> (copies.back());
|
||||
|
||||
if (ar) {
|
||||
ar->set_fade_out_active (false);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
AudioPlaylist::post_combine (vector<boost::shared_ptr<Region> >& originals, boost::shared_ptr<Region> compound_region)
|
||||
{
|
||||
RegionSortByPosition cmp;
|
||||
boost::shared_ptr<AudioRegion> ar;
|
||||
boost::shared_ptr<AudioRegion> cr;
|
||||
@@ -1103,9 +1124,6 @@ AudioPlaylist::pre_combine (vector<boost::shared_ptr<Region> >& originals, boost
|
||||
|
||||
if (ar) {
|
||||
cr->set_fade_in (ar->fade_in());
|
||||
|
||||
/* disable the fade in of the first */
|
||||
|
||||
ar->set_fade_in_active (false);
|
||||
}
|
||||
|
||||
@@ -1114,7 +1132,6 @@ AudioPlaylist::pre_combine (vector<boost::shared_ptr<Region> >& originals, boost
|
||||
if (ar) {
|
||||
/* copy the fade out of the last into the compound region */
|
||||
cr->set_fade_out (ar->fade_out());
|
||||
/* disable the fade out of the first */
|
||||
ar->set_fade_out_active (false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3071,6 +3071,7 @@ Playlist::combine (const RegionList& r)
|
||||
framepos_t earliest_position = max_framepos;
|
||||
vector<TwoRegions> old_and_new_regions;
|
||||
vector<boost::shared_ptr<Region> > originals;
|
||||
vector<boost::shared_ptr<Region> > copies;
|
||||
string parent_name;
|
||||
string child_name;
|
||||
uint32_t max_level = 0;
|
||||
@@ -3105,6 +3106,7 @@ Playlist::combine (const RegionList& r)
|
||||
|
||||
old_and_new_regions.push_back (TwoRegions (original_region,copied_region));
|
||||
originals.push_back (original_region);
|
||||
copies.push_back (copied_region);
|
||||
|
||||
RegionFactory::add_compound_association (original_region, copied_region);
|
||||
|
||||
@@ -3123,6 +3125,8 @@ Playlist::combine (const RegionList& r)
|
||||
|
||||
pl->in_partition = false;
|
||||
|
||||
pre_combine (copies);
|
||||
|
||||
/* now create a new PlaylistSource for each channel in the new playlist */
|
||||
|
||||
SourceList sources;
|
||||
@@ -3131,6 +3135,7 @@ Playlist::combine (const RegionList& r)
|
||||
for (uint32_t chn = 0; chn < channels; ++chn) {
|
||||
sources.push_back (SourceFactory::createFromPlaylist (_type, _session, pl, parent_name, chn, 0, extent.second, false, false));
|
||||
}
|
||||
|
||||
|
||||
/* now a new whole-file region using the list of sources */
|
||||
|
||||
@@ -3169,8 +3174,8 @@ Playlist::combine (const RegionList& r)
|
||||
/* do type-specific stuff with the originals and the new compound
|
||||
region
|
||||
*/
|
||||
|
||||
pre_combine (originals, compound_region);
|
||||
|
||||
post_combine (originals, compound_region);
|
||||
|
||||
/* add the new region at the right location */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user