Merge branch 'blender-v2.83-release'

This commit is contained in:
Richard Antalik 2020-05-01 21:28:55 +02:00
commit 87602d886f
3 changed files with 38 additions and 14 deletions

View File

@ -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;

View File

@ -134,19 +134,29 @@ static bool seq_prefetch_job_is_waiting(Scene *scene)
return pfjob->waiting;
}
static Sequence *sequencer_prefetch_get_original_sequence(Sequence *seq, ListBase *seqbase)
{
LISTBASE_FOREACH (Sequence *, seq_orig, seqbase) {
if (strcmp(seq->name, seq_orig->name) == 0) {
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 NULL;
}
/* for cache context swapping */
Sequence *BKE_sequencer_prefetch_get_original_sequence(Sequence *seq, Scene *scene)
{
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) {
if (strcmp(seq->name, seq_orig->name) == 0) {
break;
}
}
return seq_orig;
return sequencer_prefetch_get_original_sequence(seq, &ed->seqbase);
}
/* for cache context swapping */

View File

@ -357,20 +357,24 @@ static eOLDrawState tree_element_set_active_object(bContext *C,
}
te_ob = outliner_find_id(soops, &soops->tree, (ID *)ob);
if (te_ob != NULL) {
if (te_ob != NULL && te_ob != te) {
parent_tselem = TREESTORE(te_ob);
}
if (!ELEM(NULL, parent_tselem, base)) {
if (base) {
if (set == OL_SETSEL_EXTEND) {
/* swap select */
if (base->flag & BASE_SELECTED) {
ED_object_base_select(base, BA_DESELECT);
parent_tselem->flag &= ~TSE_SELECTED;
if (parent_tselem) {
parent_tselem->flag &= ~TSE_SELECTED;
}
}
else {
ED_object_base_select(base, BA_SELECT);
parent_tselem->flag |= TSE_SELECTED;
if (parent_tselem) {
parent_tselem->flag |= TSE_SELECTED;
}
}
}
else {
@ -386,7 +390,9 @@ static eOLDrawState tree_element_set_active_object(bContext *C,
BKE_view_layer_base_deselect_all(view_layer);
}
ED_object_base_select(base, BA_SELECT);
parent_tselem->flag |= TSE_SELECTED;
if (parent_tselem) {
parent_tselem->flag |= TSE_SELECTED;
}
}
if (recursive) {