Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2016-06-14 21:05:55 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-06-14 21:08:03 +0300
commit28398f654dc117153af9e5a6a3c5309eb9f8adf6 (patch)
tree86cca7784ce35c04aad16f0584828154ba27fcb3 /source/blender/editors
parenteaf894db6d9d34c924f87071c6e3f736a4124791 (diff)
Correct update issue caused by recent commit
VSE effects within a meta-strip could fail to update on cancel.
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/transform/transform_conversions.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index b9fee448c33..f98fc7bf226 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -4943,22 +4943,27 @@ static void freeSeqData(TransInfo *t, TransCustomData *custom_data)
}
if (overlap) {
- bool has_effect = false;
+ bool has_effect_root = false, has_effect_any = false;
for (seq = seqbasep->first; seq; seq = seq->next)
seq->tmp = NULL;
td = t->data;
for (a = 0, seq_prev = NULL; a < t->total; a++, td++, seq_prev = seq) {
seq = ((TransDataSeq *)td->extra)->seq;
- if ((seq != seq_prev) && (seq->depth == 0)) {
+ if ((seq != seq_prev)) {
/* check effects strips, we cant change their time */
if ((seq->type & SEQ_TYPE_EFFECT) && seq->seq1) {
- has_effect = true;
+ has_effect_any = true;
+ if (seq->depth == 0) {
+ has_effect_root = true;
+ }
}
else {
/* Tag seq with a non zero value,
* used by BKE_sequence_base_shuffle_time to identify the ones to shuffle */
- seq->tmp = (void *)1;
+ if (seq->depth == 0) {
+ seq->tmp = (void *)1;
+ }
}
}
@@ -5001,7 +5006,7 @@ static void freeSeqData(TransInfo *t, TransCustomData *custom_data)
BKE_sequence_base_shuffle_time(seqbasep, t->scene);
}
- if (has_effect) {
+ if (has_effect_any) {
/* update effects strips based on strips just moved in time */
td = t->data;
for (a = 0, seq_prev = NULL; a < t->total; a++, td++, seq_prev = seq) {
@@ -5012,7 +5017,9 @@ static void freeSeqData(TransInfo *t, TransCustomData *custom_data)
}
}
}
+ }
+ if (has_effect_root) {
/* now if any effects _still_ overlap, we need to move them up */
td = t->data;
for (a = 0, seq_prev = NULL; a < t->total; a++, td++, seq_prev = seq) {