diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/audio_playlist.cc | 4 | ||||
-rw-r--r-- | libs/ardour/crossfade.cc | 7 |
2 files changed, 11 insertions, 0 deletions
diff --git a/libs/ardour/audio_playlist.cc b/libs/ardour/audio_playlist.cc index 01ffb0b9fb..c3d4bfc8de 100644 --- a/libs/ardour/audio_playlist.cc +++ b/libs/ardour/audio_playlist.cc @@ -446,6 +446,10 @@ AudioPlaylist::check_dependents (boost::shared_ptr<Region> r, bool norefresh) continue; } + if (other->position() == r->position() && other->length() == r->length()) { + /* precise overlay of two regions - no xfade */ + continue; + } if (other->layer() < region->layer()) { top = region; diff --git a/libs/ardour/crossfade.cc b/libs/ardour/crossfade.cc index 47b07dc38d..302b19399e 100644 --- a/libs/ardour/crossfade.cc +++ b/libs/ardour/crossfade.cc @@ -441,6 +441,13 @@ Crossfade::refresh () Invalidated (shared_from_this()); return false; } + + /* regions must cannot be identically sized and placed */ + + if (_in->position() == _out->position() && _in->length() == _out->length()) { + Invalidated (shared_from_this()); + return false; + } /* layer ordering cannot change */ |