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:
authorRichard Antalik <richardantalik@gmail.com>2020-05-01 22:28:55 +0300
committerRichard Antalik <richardantalik@gmail.com>2020-05-01 22:28:55 +0300
commit87602d886f70a38a20e5738709dd971744a27516 (patch)
treed1800954dd2ff507a7a20fe085a0aee822921d37 /source/blender/blenkernel
parent9ca78c9bcc4211abf8a83abd86f457c34e725303 (diff)
parent98990f6ba439b496e8680d5043ebb18365b9e054 (diff)
Merge branch 'blender-v2.83-release'
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/seqcache.c8
-rw-r--r--source/blender/blenkernel/intern/seqprefetch.c28
2 files changed, 27 insertions, 9 deletions
diff --git a/source/blender/blenkernel/intern/seqcache.c b/source/blender/blenkernel/intern/seqcache.c
index f999a98faac..8a8b4d98c63 100644
--- a/source/blender/blenkernel/intern/seqcache.c
+++ b/source/blender/blenkernel/intern/seqcache.c
@@ -1225,6 +1225,10 @@ struct ImBuf *BKE_sequencer_cache_get(
seq = BKE_sequencer_prefetch_get_original_sequence(seq, scene);
}
+ if (!seq) {
+ return NULL;
+ }
+
if (!scene->ed->cache) {
seq_cache_create(context->bmain, scene);
}
@@ -1287,6 +1291,10 @@ bool BKE_sequencer_cache_put_if_possible(const SeqRenderData *context,
seq = BKE_sequencer_prefetch_get_original_sequence(seq, scene);
}
+ if (!seq) {
+ return NULL;
+ }
+
if (BKE_sequencer_cache_recycle_item(scene)) {
BKE_sequencer_cache_put(context, seq, cfra, type, ibuf, cost, skip_disk_cache);
return true;
diff --git a/source/blender/blenkernel/intern/seqprefetch.c b/source/blender/blenkernel/intern/seqprefetch.c
index bba829529a3..1425bff48a8 100644
--- a/source/blender/blenkernel/intern/seqprefetch.c
+++ b/source/blender/blenkernel/intern/seqprefetch.c
@@ -134,19 +134,29 @@ static bool seq_prefetch_job_is_waiting(Scene *scene)
return pfjob->waiting;
}
-/* for cache context swapping */
-Sequence *BKE_sequencer_prefetch_get_original_sequence(Sequence *seq, Scene *scene)
+static Sequence *sequencer_prefetch_get_original_sequence(Sequence *seq, ListBase *seqbase)
{
- Editing *ed = scene->ed;
- ListBase *seqbase = &ed->seqbase;
- Sequence *seq_orig = NULL;
-
- for (seq_orig = (Sequence *)seqbase->first; seq_orig; seq_orig = seq_orig->next) {
+ LISTBASE_FOREACH (Sequence *, seq_orig, seqbase) {
if (strcmp(seq->name, seq_orig->name) == 0) {
- break;
+ return seq_orig;
+ }
+
+ if (seq_orig->type == SEQ_TYPE_META) {
+ Sequence *match = sequencer_prefetch_get_original_sequence(seq, &seq_orig->seqbase);
+ if (match != NULL) {
+ return match;
+ }
}
}
- return seq_orig;
+
+ return NULL;
+}
+
+/* for cache context swapping */
+Sequence *BKE_sequencer_prefetch_get_original_sequence(Sequence *seq, Scene *scene)
+{
+ Editing *ed = scene->ed;
+ return sequencer_prefetch_get_original_sequence(seq, &ed->seqbase);
}
/* for cache context swapping */