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:
authorBastien Montagne <montagne29@wanadoo.fr>2019-01-11 21:48:56 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2019-01-11 22:01:01 +0300
commit1ded3d2f7c04100698afdee356e2ba8d4ae2d6bd (patch)
tree6beeb28679ed0ab09c52e376e2969a58a86a2b69 /source/blender/editors/space_sequencer
parentc97794520f030b03a87c5c7b386aeb64571f46f6 (diff)
Fix T55668: Volume Keyframe on Cut-ted Metastrip (re-doing the fix in better way).
Fix T60194: Sequencer cut loses animation data for the right strip. Fixing the first also fixes the second. First attempt was delaying uniquename check at a later step of cut process, after everything had been duplicated. While this fixed first issue, second one became even more proeminent (it become active for all strips, and not only video/audio movie strips in meta's). So instead, passing along the list of (new) sequences, so that duplicated seqs can be put there immediately, before checking for unique names, henceforth ensuring even strips inside meta's get properly handled.
Diffstat (limited to 'source/blender/editors/space_sequencer')
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index cb0034b7914..0f382ad0270 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -665,7 +665,7 @@ static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short de
}
-static Sequence *cut_seq_hard(Scene *scene, Sequence *seq, int cutframe)
+static Sequence *cut_seq_hard(Scene *scene, Sequence *seq, ListBase *new_seq_list, int cutframe)
{
TransSeq ts;
Sequence *seqn = NULL;
@@ -737,7 +737,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence *seq, int cutframe)
if (!skip_dup) {
/* Duplicate AFTER the first change */
- seqn = BKE_sequence_dupli_recursive(scene, scene, seq, SEQ_DUPE_UNIQUE_NAME | SEQ_DUPE_ANIM);
+ seqn = BKE_sequence_dupli_recursive(scene, scene, new_seq_list, seq, SEQ_DUPE_UNIQUE_NAME | SEQ_DUPE_ANIM);
}
if (seqn) {
@@ -786,7 +786,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence *seq, int cutframe)
return seqn;
}
-static Sequence *cut_seq_soft(Scene *scene, Sequence *seq, int cutframe)
+static Sequence *cut_seq_soft(Scene *scene, Sequence *seq, ListBase *new_seq_list, int cutframe)
{
TransSeq ts;
Sequence *seqn = NULL;
@@ -846,7 +846,7 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence *seq, int cutframe)
if (!skip_dup) {
/* Duplicate AFTER the first change */
- seqn = BKE_sequence_dupli_recursive(scene, scene, seq, SEQ_DUPE_UNIQUE_NAME | SEQ_DUPE_ANIM);
+ seqn = BKE_sequence_dupli_recursive(scene, scene, new_seq_list, seq, SEQ_DUPE_UNIQUE_NAME | SEQ_DUPE_ANIM);
}
if (seqn) {
@@ -898,7 +898,7 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence *seq, int cutframe)
*/
static bool cut_seq_list(Scene *scene, ListBase *slist, int cutframe,
- Sequence * (*cut_seq)(Scene *, Sequence *, int))
+ Sequence * (*cut_seq)(Scene *, Sequence *, ListBase *, int))
{
Sequence *seq, *seq_next_iter;
Sequence *seq_first_new = NULL;
@@ -912,9 +912,8 @@ static bool cut_seq_list(Scene *scene, ListBase *slist, int cutframe,
if (cutframe > seq->startdisp &&
cutframe < seq->enddisp)
{
- Sequence *seqn = cut_seq(scene, seq, cutframe);
+ Sequence *seqn = cut_seq(scene, seq, slist, cutframe);
if (seqn) {
- BLI_addtail(slist, seqn);
if (seq_first_new == NULL) {
seq_first_new = seqn;
}
@@ -2411,8 +2410,7 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
/* new seq */
se = BKE_sequencer_give_stripelem(seq, cfra);
- seq_new = BKE_sequence_dupli_recursive(scene, scene, seq, SEQ_DUPE_UNIQUE_NAME);
- BLI_addtail(ed->seqbasep, seq_new);
+ seq_new = BKE_sequence_dupli_recursive(scene, scene, ed->seqbasep, seq, SEQ_DUPE_UNIQUE_NAME);
seq_new->start = start_ofs;
seq_new->type = SEQ_TYPE_IMAGE;