From 099c4c8d064dce9f0517ae3e32d694a19d580d71 Mon Sep 17 00:00:00 2001 From: Sampo Savolainen Date: Mon, 17 Apr 2006 18:43:51 +0000 Subject: [PATCH] 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 --- libs/ardour/audioregion.cc | 18 +++++++++++++----- 1 file 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) { -- 2.30.2