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
This commit is contained in:
parent
dca6c6d91f
commit
099c4c8d06
@ -78,6 +78,7 @@ AudioRegion::AudioRegion (Source& src, jack_nframes_t start, jack_nframes_t leng
|
|||||||
|
|
||||||
set_default_fades ();
|
set_default_fades ();
|
||||||
set_default_envelope ();
|
set_default_envelope ();
|
||||||
|
|
||||||
save_state ("initial state");
|
save_state ("initial state");
|
||||||
|
|
||||||
_envelope.StateChanged.connect (mem_fun (*this, &AudioRegion::envelope_changed));
|
_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 */
|
/* return to default fades if the existing ones are too long */
|
||||||
|
_fade_in_disabled = 0;
|
||||||
|
_fade_out_disabled = 0;
|
||||||
|
|
||||||
|
|
||||||
if (_flags & LeftOfSplit) {
|
if (_flags & LeftOfSplit) {
|
||||||
if (_fade_in.back()->when >= _length) {
|
if (_fade_in.back()->when >= _length) {
|
||||||
set_default_fade_in ();
|
set_default_fade_in ();
|
||||||
|
} else {
|
||||||
|
_fade_in_disabled = other._fade_in_disabled;
|
||||||
}
|
}
|
||||||
set_default_fade_out ();
|
set_default_fade_out ();
|
||||||
_flags = Flag (_flags & ~Region::RightOfSplit);
|
_flags = Flag (_flags & ~Region::LeftOfSplit);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_flags & RightOfSplit) {
|
if (_flags & RightOfSplit) {
|
||||||
if (_fade_out.back()->when >= _length) {
|
if (_fade_out.back()->when >= _length) {
|
||||||
set_default_fade_out ();
|
set_default_fade_out ();
|
||||||
|
} else {
|
||||||
|
_fade_out_disabled = other._fade_out_disabled;
|
||||||
}
|
}
|
||||||
set_default_fade_in ();
|
set_default_fade_in ();
|
||||||
_flags = Flag (_flags & ~Region::LeftOfSplit);
|
_flags = Flag (_flags & ~Region::RightOfSplit);
|
||||||
}
|
}
|
||||||
|
|
||||||
_scale_amplitude = other._scale_amplitude;
|
_scale_amplitude = other._scale_amplitude;
|
||||||
|
|
||||||
_fade_in_disabled = 0;
|
|
||||||
_fade_out_disabled = 0;
|
|
||||||
|
|
||||||
save_state ("initial state");
|
save_state ("initial state");
|
||||||
|
|
||||||
_envelope.StateChanged.connect (mem_fun (*this, &AudioRegion::envelope_changed));
|
_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) {
|
if ((prop = node.property ("flags")) != 0) {
|
||||||
_flags = Flag (strtol (prop->value().c_str(), (char **) 0, 16));
|
_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) {
|
if ((prop = node.property ("scale-gain")) != 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user