[Bf-blender-cvs] [855799ecc1c] master: Fix T53430: Cut at the strip end fails w/ endstill

Campbell Barton noreply at git.blender.org
Tue Dec 5 18:39:03 CET 2017


Commit: 855799ecc1c5e53d9fbfe520fd5402bc0138f674
Author: Campbell Barton
Date:   Wed Dec 6 04:52:38 2017 +1100
Branches: master
https://developer.blender.org/rB855799ecc1c5e53d9fbfe520fd5402bc0138f674

Fix T53430: Cut at the strip end fails w/ endstill

===================================================================

M	source/blender/editors/space_sequencer/sequencer_edit.c

===================================================================

diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index 0d1cc5d4552..f0d14825bb2 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -695,7 +695,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence *seq, int cutframe)
 		BKE_sequence_calc(scene, seq);
 	}
 
-	if ((seq->startstill) && (cutframe < seq->start)) {
+	if ((seq->startstill) && (cutframe <= seq->start)) {
 		/* don't do funny things with METAs ... */
 		if (seq->type == SEQ_TYPE_META) {
 			skip_dup = true;
@@ -709,13 +709,15 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence *seq, int cutframe)
 		}
 	}
 	/* normal strip */
-	else if ((cutframe >= seq->start) && (cutframe <= (seq->start + seq->len))) {
+	else if ((cutframe >= seq->start) && (cutframe < (seq->start + seq->len))) {
 		seq->endofs = 0;
 		seq->endstill = 0;
 		seq->anim_endofs += (seq->start + seq->len) - cutframe;
 	}
 	/* strips with extended stillframes after */
-	else if (((seq->start + seq->len) < cutframe) && (seq->endstill)) {
+	else if (((seq->start + seq->len) == cutframe) ||
+	         (((seq->start + seq->len) < cutframe) && (seq->endstill)))
+	{
 		seq->endstill -= seq->enddisp - cutframe;
 		/* don't do funny things with METAs ... */
 		if (seq->type == SEQ_TYPE_META) {
@@ -744,7 +746,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence *seq, int cutframe)
 		}
 		
 		/* normal strip */
-		else if ((cutframe >= seqn->start) && (cutframe <= (seqn->start + seqn->len))) {
+		else if ((cutframe >= seqn->start) && (cutframe < (seqn->start + seqn->len))) {
 			seqn->start = cutframe;
 			seqn->startstill = 0;
 			seqn->startofs = 0;
@@ -755,7 +757,9 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence *seq, int cutframe)
 		}
 		
 		/* strips with extended stillframes after */
-		else if (((seqn->start + seqn->len) < cutframe) && (seqn->endstill)) {
+		else if (((seqn->start + seqn->len) == cutframe) ||
+		         (((seqn->start + seqn->len) < cutframe) && (seqn->endstill)))
+		{
 			seqn->start = cutframe;
 			seqn->startofs = 0;
 			seqn->anim_startofs += ts.len - 1;
@@ -791,7 +795,7 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence *seq, int cutframe)
 	/* First Strip! */
 	/* strips with extended stillfames before */
 	
-	if ((seq->startstill) && (cutframe < seq->start)) {
+	if ((seq->startstill) && (cutframe <= seq->start)) {
 		/* don't do funny things with METAs ... */
 		if (seq->type == SEQ_TYPE_META) {
 			skip_dup = true;
@@ -805,11 +809,13 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence *seq, int cutframe)
 		}
 	}
 	/* normal strip */
-	else if ((cutframe >= seq->start) && (cutframe <= (seq->start + seq->len))) {
+	else if ((cutframe >= seq->start) && (cutframe < (seq->start + seq->len))) {
 		seq->endofs = (seq->start + seq->len) - cutframe;
 	}
 	/* strips with extended stillframes after */
-	else if (((seq->start + seq->len) < cutframe) && (seq->endstill)) {
+	else if (((seq->start + seq->len) == cutframe) ||
+	         (((seq->start + seq->len) < cutframe) && (seq->endstill)))
+	{
 		seq->endstill -= seq->enddisp - cutframe;
 		/* don't do funny things with METAs ... */
 		if (seq->type == SEQ_TYPE_META) {
@@ -835,9 +841,9 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence *seq, int cutframe)
 			seqn->endofs = ts.endofs;
 			seqn->endstill = ts.endstill;
 		}
-		
+
 		/* normal strip */
-		else if ((cutframe >= seqn->start) && (cutframe <= (seqn->start + seqn->len))) {
+		if ((cutframe >= seqn->start) && (cutframe < (seqn->start + seqn->len))) {
 			seqn->startstill = 0;
 			seqn->startofs = cutframe - ts.start;
 			seqn->endofs = ts.endofs;
@@ -845,7 +851,9 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence *seq, int cutframe)
 		}
 		
 		/* strips with extended stillframes after */
-		else if (((seqn->start + seqn->len) < cutframe) && (seqn->endstill)) {
+		else if (((seqn->start + seqn->len) == cutframe) ||
+		         (((seqn->start + seqn->len) < cutframe) && (seqn->endstill)))
+		{
 			seqn->start = cutframe - ts.len + 1;
 			seqn->startofs = ts.len - 1;
 			seqn->endstill = ts.enddisp - cutframe - 1;



More information about the Bf-blender-cvs mailing list