diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-05-02 12:25:22 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-05-02 12:25:22 +0400 |
commit | f06343e0d8f8d4848ecafecef4a80c74cacde607 (patch) | |
tree | 94f2c860843c1b6efcbab83fea65431bd2760ecf /source/blender/makesrna/intern/rna_sequencer.c | |
parent | 0408684763c469bf675b4f374a034957cc71a3bc (diff) |
Fix #35182: VSE - speed control Trim duration (soft) end reset to 0
Was a regression in rev53509, whic hallowed manual edit of properties
which weren't supposed to be editing manually.
Added the same effects length update as in trnaslation code, so now
updating strip frames from py/interface will keep things consistent.
Diffstat (limited to 'source/blender/makesrna/intern/rna_sequencer.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_sequencer.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index e522b73039b..64b8ef17e89 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -161,8 +161,20 @@ static void do_sequence_frame_change_update(Scene *scene, Sequence *seq) { Editing *ed = BKE_sequencer_editing_get(scene, FALSE); ListBase *seqbase = BKE_sequence_seqbase(&ed->seqbase, seq); + Sequence *tseq; BKE_sequence_calc_disp(scene, seq); + /* ensure effects are always fit in length to their input */ + + /* TODO(sergey): probably could be optimized. + * in terms skipping update of non-changing strips + */ + for (tseq = seqbase->first; tseq; tseq = tseq->next) { + if (tseq->seq1 || tseq->seq2 || tseq->seq3) { + BKE_sequence_calc(scene, tseq); + } + } + if (BKE_sequence_test_overlap(seqbase, seq)) { BKE_sequence_base_shuffle(seqbase, seq, scene); /* XXX - BROKEN!, uses context seqbasep */ } @@ -1460,14 +1472,14 @@ static void rna_def_sequence(BlenderRNA *brna) // RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */ RNA_def_property_range(prop, 0, MAXFRAME); RNA_def_property_ui_text(prop, "Start Still", ""); - RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_update"); + RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update"); prop = RNA_def_property(srna, "frame_still_end", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "endstill"); // RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* overlap tests */ RNA_def_property_range(prop, 0, MAXFRAME); RNA_def_property_ui_text(prop, "End Still", ""); - RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_update"); + RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_frame_change_update"); prop = RNA_def_property(srna, "channel", PROP_INT, PROP_UNSIGNED); RNA_def_property_int_sdna(prop, NULL, "machine"); |