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:
authorDalai Felinto <dfelinto@gmail.com>2017-04-19 20:08:37 +0300
committerDalai Felinto <dfelinto@gmail.com>2017-04-20 12:00:32 +0300
commit913472165b1d49e0d964fce59f1ec156e92f9e9c (patch)
tree8fdb71e09848180c751b55f3ee07d2c944ca986f /source/blender/blenkernel
parent3cb0e8e1af4f8a045590d85a999fd5dacd0d835e (diff)
Fix T51215: depsgraph evaluation of collection properties (overrides)
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_layer.h1
-rw-r--r--source/blender/blenkernel/intern/layer.c23
2 files changed, 9 insertions, 15 deletions
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index 2cd11db1699..e1aaf39e2a3 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -131,7 +131,6 @@ void BKE_layer_eval_layer_collection_pre(struct EvaluationContext *eval_ctx,
struct Scene *scene,
struct SceneLayer *scene_layer);
void BKE_layer_eval_layer_collection(struct EvaluationContext *eval_ctx,
- struct Scene *scene,
struct LayerCollection *layer_collection,
struct LayerCollection *parent_layer_collection);
void BKE_layer_eval_layer_collection_post(struct EvaluationContext *eval_ctx,
diff --git a/source/blender/blenkernel/intern/layer.c b/source/blender/blenkernel/intern/layer.c
index 6107b6ca12b..e9c3a43fe1b 100644
--- a/source/blender/blenkernel/intern/layer.c
+++ b/source/blender/blenkernel/intern/layer.c
@@ -1365,7 +1365,7 @@ static void idproperty_reset(IDProperty **props, IDProperty *props_ref)
*props = IDP_New(IDP_GROUP, &val, ROOT_PROP);
if (props_ref) {
- IDP_MergeGroup(*props, props_ref, true);
+ IDP_MergeGroupValues(*props, props_ref);
}
}
@@ -1383,7 +1383,6 @@ void BKE_layer_eval_layer_collection_pre(struct EvaluationContext *UNUSED(eval_c
}
void BKE_layer_eval_layer_collection(struct EvaluationContext *UNUSED(eval_ctx),
- Scene *scene,
LayerCollection *layer_collection,
LayerCollection *parent_layer_collection)
{
@@ -1404,25 +1403,21 @@ void BKE_layer_eval_layer_collection(struct EvaluationContext *UNUSED(eval_ctx),
}
/* overrides */
- if (parent_layer_collection != NULL) {
- idproperty_reset(&layer_collection->properties_evaluated, parent_layer_collection->properties_evaluated);
- }
- else if (layer_collection->prev != NULL) {
- idproperty_reset(&layer_collection->properties_evaluated, NULL);
- }
- else {
- idproperty_reset(&layer_collection->properties_evaluated, scene->collection_properties);
- }
-
if (is_visible) {
- IDP_MergeGroup(layer_collection->properties_evaluated, layer_collection->properties, true);
+ if (parent_layer_collection == NULL) {
+ idproperty_reset(&layer_collection->properties_evaluated, layer_collection->properties);
+ }
+ else {
+ idproperty_reset(&layer_collection->properties_evaluated, parent_layer_collection->properties_evaluated);
+ IDP_MergeGroupValues(layer_collection->properties_evaluated, layer_collection->properties);
+ }
}
for (LinkData *link = layer_collection->object_bases.first; link != NULL; link = link->next) {
Base *base = link->data;
if (is_visible) {
- IDP_SyncGroupValues(base->collection_properties, layer_collection->properties_evaluated);
+ IDP_MergeGroupValues(base->collection_properties, layer_collection->properties_evaluated);
base->flag |= BASE_VISIBLED;
}