summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorSampo Savolainen <v2@iki.fi>2006-04-17 18:43:51 +0000
committerSampo Savolainen <v2@iki.fi>2006-04-17 18:43:51 +0000
commit099c4c8d064dce9f0517ae3e32d694a19d580d71 (patch)
tree4bf1b7edcfa3f42fc03144d3f55c4bc40c5e81d1 /libs
parentdca6c6d91f443d8d779dd043b2fc0020074a00af (diff)
Make sure region fades don't get messed up when regions are split.
git-svn-id: svn://localhost/trunk/ardour2@454 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/audioregion.cc18
1 files changed, 13 insertions, 5 deletions
diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc
index 23db0a0604..c63c231f86 100644
--- a/libs/ardour/audioregion.cc
+++ b/libs/ardour/audioregion.cc
@@ -78,6 +78,7 @@ AudioRegion::AudioRegion (Source& src, jack_nframes_t start, jack_nframes_t leng
set_default_fades ();
set_default_envelope ();
+
save_state ("initial state");
_envelope.StateChanged.connect (mem_fun (*this, &AudioRegion::envelope_changed));
@@ -164,28 +165,32 @@ AudioRegion::AudioRegion (const AudioRegion& other, jack_nframes_t offset, jack_
}
/* return to default fades if the existing ones are too long */
+ _fade_in_disabled = 0;
+ _fade_out_disabled = 0;
+
if (_flags & LeftOfSplit) {
if (_fade_in.back()->when >= _length) {
set_default_fade_in ();
+ } else {
+ _fade_in_disabled = other._fade_in_disabled;
}
set_default_fade_out ();
- _flags = Flag (_flags & ~Region::RightOfSplit);
+ _flags = Flag (_flags & ~Region::LeftOfSplit);
}
if (_flags & RightOfSplit) {
if (_fade_out.back()->when >= _length) {
set_default_fade_out ();
+ } else {
+ _fade_out_disabled = other._fade_out_disabled;
}
set_default_fade_in ();
- _flags = Flag (_flags & ~Region::LeftOfSplit);
+ _flags = Flag (_flags & ~Region::RightOfSplit);
}
_scale_amplitude = other._scale_amplitude;
- _fade_in_disabled = 0;
- _fade_out_disabled = 0;
-
save_state ("initial state");
_envelope.StateChanged.connect (mem_fun (*this, &AudioRegion::envelope_changed));
@@ -718,6 +723,9 @@ AudioRegion::set_state (const XMLNode& node)
if ((prop = node.property ("flags")) != 0) {
_flags = Flag (strtol (prop->value().c_str(), (char **) 0, 16));
+
+ _flags = Flag (_flags & ~Region::LeftOfSplit);
+ _flags = Flag (_flags & ~Region::RightOfSplit);
}
if ((prop = node.property ("scale-gain")) != 0) {