diff options
Diffstat (limited to 'source/blender/sequencer/intern/prefetch.c')
-rw-r--r-- | source/blender/sequencer/intern/prefetch.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/source/blender/sequencer/intern/prefetch.c b/source/blender/sequencer/intern/prefetch.c index 0c45eb09492..42affae26ed 100644 --- a/source/blender/sequencer/intern/prefetch.c +++ b/source/blender/sequencer/intern/prefetch.c @@ -328,6 +328,20 @@ static void seq_prefetch_update_scene(Scene *scene) seq_prefetch_init_depsgraph(pfjob); } +static void seq_prefetch_update_active_seqbase(PrefetchJob *pfjob) +{ + MetaStack *ms_orig = SEQ_meta_stack_active_get(SEQ_editing_get(pfjob->scene)); + Editing *ed_eval = SEQ_editing_get(pfjob->scene_eval); + + if (ms_orig != NULL) { + Sequence *meta_eval = seq_prefetch_get_original_sequence(ms_orig->parseq, pfjob->scene_eval); + SEQ_seqbase_active_set(ed_eval, &meta_eval->seqbase); + } + else { + SEQ_seqbase_active_set(ed_eval, &ed_eval->seqbase); + } +} + static void seq_prefetch_resume(Scene *scene) { PrefetchJob *pfjob = seq_prefetch_job_get(scene); @@ -486,7 +500,7 @@ static void *seq_prefetch_frames(void *job) */ pfjob->scene_eval->ed->prefetch_job = pfjob; - ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(pfjob->scene)); + ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(pfjob->scene_eval)); if (seq_prefetch_must_skip_frame(pfjob, seqbase)) { pfjob->num_frames_prefetched++; continue; @@ -549,6 +563,7 @@ static PrefetchJob *seq_prefetch_start_ex(const SeqRenderData *context, float cf seq_prefetch_update_scene(context->scene); seq_prefetch_update_context(context); + seq_prefetch_update_active_seqbase(pfjob); BLI_threadpool_remove(&pfjob->threads, pfjob); BLI_threadpool_insert(&pfjob->threads, pfjob); |