summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorSampo Savolainen <v2@iki.fi>2006-03-31 22:31:59 +0000
committerSampo Savolainen <v2@iki.fi>2006-03-31 22:31:59 +0000
commit1bde5eabc6258655c1f3baeca61d79f32d270914 (patch)
tree0f837b0b054a23278b65c2ef9441e650871aecf7 /libs
parent7755c2dbfefd40697ce390e2c2f254e2122a2a39 (diff)
Splitting a region doesn't affect layering: the two remaining pieces
will stay in the same place as the original one when compared to other regions on the playlist. git-svn-id: svn://localhost/trunk/ardour2@436 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/playlist.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc
index 1c34099c7e..73be1da86d 100644
--- a/libs/ardour/playlist.cc
+++ b/libs/ardour/playlist.cc
@@ -998,9 +998,21 @@ Playlist::split_region (Region& region, jack_nframes_t playlist_position)
_session.region_name (after_name, region.name(), false);
right = createRegion (region, before, after, after_name, region.layer(), Region::Flag (region.flags()|Region::RightOfSplit));
-
+
add_region_internal (left, region.position(), true);
add_region_internal (right, region.position() + before);
+
+ uint64_t orig_layer_op = region.last_layer_op();
+ for (RegionList::iterator i = regions.begin(); i != regions.end(); ++i) {
+ if ((*i)->last_layer_op() > orig_layer_op) {
+ (*i)->set_last_layer_op( (*i)->last_layer_op() + 1 );
+ }
+ }
+
+ left->set_last_layer_op ( orig_layer_op );
+ right->set_last_layer_op ( orig_layer_op + 1);
+
+ layer_op_counter++;
finalize_split_region (&region, left, right);