diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-03-26 19:57:00 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2012-03-26 19:57:00 +0400 |
commit | adbe628a1b6dfe4f61ce56fede9cc9ebba19caa7 (patch) | |
tree | 00eaa7d02e2736fda6214421ead71ef559f07cca /source/blender/blenkernel/intern/sequencer.c | |
parent | 3d5111a5edba9e0e4947aba866cba083a20853a0 (diff) |
Fix crash of Refresh Sequencer when some Movie / MovieClip strips doesn't have animation opened
Diffstat (limited to 'source/blender/blenkernel/intern/sequencer.c')
-rw-r--r-- | source/blender/blenkernel/intern/sequencer.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 18749d7b5a6..94069f94f4d 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -4007,3 +4007,31 @@ void seqbase_dupli_recursive(Scene *scene, Scene *scene_to, ListBase *nseqbase, } } } + +void seq_update_sequence_length(Scene *scene, Editing *ed, Sequence *seq) +{ + int changed = FALSE; + + switch (seq->type) { + case SEQ_SCENE: + seq->len = seq->scene->r.efra - seq->scene->r.sfra + 1; + changed = TRUE; + break; + case SEQ_MOVIECLIP: + seq->len = BKE_movieclip_get_duration(seq->clip); + changed = TRUE; + break; + case SEQ_MOVIE: + seq_open_anim_file(seq); + seq->len = IMB_anim_get_duration(seq->anim, IMB_TC_RECORD_RUN); + changed = TRUE; + break; + } + + if (changed) { + calc_sequence_disp(scene, seq); + + if (seq_test_overlap(ed->seqbasep, seq)) + shuffle_seq(ed->seqbasep, seq, scene); + } +} |