Merge branch 'blender-v2.83-release'
This commit is contained in:
commit
87602d886f
|
@ -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;
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue