diff options
author | Jacques Lucke <jacques@blender.org> | 2022-09-23 17:12:47 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-09-23 17:12:59 +0300 |
commit | 63bdd89108fe6557901be627b6d6ca4910648f40 (patch) | |
tree | fc601a660fca678f252cf57843930ae0a3f212ce | |
parent | a8a454287a27d408668f8adc6fe1b3aa988de1ac (diff) |
Cleanup: use depsgraph iterator settings in rna
Somehow missed this as part of rBb197cd5821f1dfaa5168d31984dd8014f5252456.
-rw-r--r-- | source/blender/makesrna/intern/rna_depsgraph.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/source/blender/makesrna/intern/rna_depsgraph.c b/source/blender/makesrna/intern/rna_depsgraph.c index 239452c0572..eb39492c7dc 100644 --- a/source/blender/makesrna/intern/rna_depsgraph.c +++ b/source/blender/makesrna/intern/rna_depsgraph.c @@ -355,11 +355,16 @@ static void rna_Depsgraph_object_instances_begin(CollectionPropertyIterator *ite { RNA_Depsgraph_Instances_Iterator *di_it = iter->internal.custom = MEM_callocN(sizeof(*di_it), __func__); + DEGObjectIterSettings *deg_iter_settings = MEM_callocN(sizeof(DEGObjectIterSettings), __func__); + deg_iter_settings->depsgraph = (Depsgraph *)ptr->data; + deg_iter_settings->flags = DEG_ITER_OBJECT_FLAG_LINKED_DIRECTLY | + DEG_ITER_OBJECT_FLAG_LINKED_VIA_SET | DEG_ITER_OBJECT_FLAG_VISIBLE | + DEG_ITER_OBJECT_FLAG_DUPLI; DEGObjectIterData *data = &di_it->deg_data[0]; - data->graph = (Depsgraph *)ptr->data; - data->flag = DEG_ITER_OBJECT_FLAG_LINKED_DIRECTLY | DEG_ITER_OBJECT_FLAG_LINKED_VIA_SET | - DEG_ITER_OBJECT_FLAG_VISIBLE | DEG_ITER_OBJECT_FLAG_DUPLI; + data->settings = deg_iter_settings; + data->graph = deg_iter_settings->depsgraph; + data->flag = deg_iter_settings->flags; di_it->iterators[0].iter.valid = true; DEG_iterator_objects_begin(&di_it->iterators[0].iter, data); @@ -398,6 +403,11 @@ static void rna_Depsgraph_object_instances_end(CollectionPropertyIterator *iter) iter->internal.custom; for (int i = 0; i < ARRAY_SIZE(di_it->iterators); i++) { RNA_DepsgraphIterator *di = &di_it->iterators[i]; + DEGObjectIterData *data = &di_it->deg_data[i]; + if (i == 0) { + /* Is shared between both iterators. */ + MEM_freeN(data->settings); + } DEG_iterator_objects_end(&di->iter); # ifdef WITH_PYTHON |