diff options
Diffstat (limited to 'source/blender/sequencer')
-rw-r--r-- | source/blender/sequencer/SEQ_sequencer.h | 4 | ||||
-rw-r--r-- | source/blender/sequencer/intern/sequencer.c | 52 | ||||
-rw-r--r-- | source/blender/sequencer/intern/strip_time.c | 22 |
3 files changed, 56 insertions, 22 deletions
diff --git a/source/blender/sequencer/SEQ_sequencer.h b/source/blender/sequencer/SEQ_sequencer.h index ccadfc54e1d..85513faf3e6 100644 --- a/source/blender/sequencer/SEQ_sequencer.h +++ b/source/blender/sequencer/SEQ_sequencer.h @@ -62,8 +62,12 @@ struct Editing *SEQ_editing_get(struct Scene *scene, bool alloc); struct Editing *SEQ_editing_ensure(struct Scene *scene); void SEQ_editing_free(struct Scene *scene, const bool do_id_user); struct ListBase *SEQ_active_seqbase_get(const struct Editing *ed); +void SEQ_seqbase_active_set(struct Editing *ed, struct ListBase *seqbase); struct Sequence *SEQ_sequence_alloc(ListBase *lb, int timeline_frame, int machine, int type); void SEQ_sequence_free(struct Scene *scene, struct Sequence *seq, const bool do_clean_animdata); +struct MetaStack *SEQ_meta_stack_alloc(struct Editing *ed, struct Sequence *seq_meta); +struct MetaStack *SEQ_meta_stack_active_get(const struct Editing *ed); +void SEQ_meta_stack_free(struct Editing *ed, struct MetaStack *ms); void SEQ_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs); void SEQ_dupe_animdata(struct Scene *scene, const char *name_src, const char *name_dst); struct Sequence *SEQ_sequence_dupli_recursive(const struct Scene *scene_src, diff --git a/source/blender/sequencer/intern/sequencer.c b/source/blender/sequencer/intern/sequencer.c index 4a0e4f1d9ad..8bb0bf8fb63 100644 --- a/source/blender/sequencer/intern/sequencer.c +++ b/source/blender/sequencer/intern/sequencer.c @@ -344,6 +344,58 @@ ListBase *SEQ_active_seqbase_get(const Editing *ed) return ed->seqbasep; } + +/** + * Set seqbase that is being viewed currently. This can be main seqbase or meta strip seqbase + * + * \param ed: sequence editor data + * \param seqbase: ListBase with strips + */ +void SEQ_seqbase_active_set(Editing *ed, ListBase *seqbase) +{ + ed->seqbasep = seqbase; +} + +/** + * Create and initialize MetaStack, append it to ed->metastack ListBase + * + * \param ed: sequence editor data + * \param seq_meta: meta strip + * \return pointer to created meta stack + */ +MetaStack *SEQ_meta_stack_alloc(Editing *ed, Sequence *seq_meta) +{ + MetaStack *ms = MEM_mallocN(sizeof(MetaStack), "metastack"); + BLI_addtail(&ed->metastack, ms); + ms->parseq = seq_meta; + ms->oldbasep = ed->seqbasep; + copy_v2_v2_int(ms->disp_range, &ms->parseq->startdisp); + return ms; +} + +/** + * Free MetaStack and remoove it from ed->metastack ListBase + * + * \param ed: sequence editor data + * \param ms: meta stack + */ +void SEQ_meta_stack_free(Editing *ed, MetaStack *ms) +{ + BLI_remlink(&ed->metastack, ms); + MEM_freeN(ms); +} + +/** + * Get MetaStack that coresponds to current level that is being viewed + * + * \param ed: sequence editor data + * \return pointer to meta stack + */ +MetaStack *SEQ_meta_stack_active_get(const Editing *ed) +{ + return ed->metastack.last; +} + /** \} */ /* -------------------------------------------------------------------- */ diff --git a/source/blender/sequencer/intern/strip_time.c b/source/blender/sequencer/intern/strip_time.c index c495ad6d8f1..21dc9aa2cdd 100644 --- a/source/blender/sequencer/intern/strip_time.c +++ b/source/blender/sequencer/intern/strip_time.c @@ -164,7 +164,6 @@ void SEQ_time_update_sequence_bounds(Scene *scene, Sequence *seq) void SEQ_time_update_sequence(Scene *scene, Sequence *seq) { Sequence *seqm; - int min, max; /* check all metas recursively */ seqm = seq->seqbase.first; @@ -212,27 +211,6 @@ void SEQ_time_update_sequence(Scene *scene, Sequence *seq) } } else { - if (seq->type == SEQ_TYPE_META) { - seqm = seq->seqbase.first; - if (seqm) { - min = MAXFRAME * 2; - max = -MAXFRAME * 2; - while (seqm) { - if (seqm->startdisp < min) { - min = seqm->startdisp; - } - if (seqm->enddisp > max) { - max = seqm->enddisp; - } - seqm = seqm->next; - } - seq->start = min + seq->anim_startofs; - seq->len = max - min; - seq->len -= seq->anim_startofs; - seq->len -= seq->anim_endofs; - } - seq_update_sound_bounds_recursive(scene, seq); - } SEQ_time_update_sequence_bounds(scene, seq); } } |