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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2013-05-12 17:33:20 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-05-12 17:33:20 +0400
commit469979f9cb08640fbc00a43b59eee459460e74e1 (patch)
treed081b67e0d2274a54b876b0dc9618833d5752b1e
parent127c39b8a44df962b1ac20578497b387319efe87 (diff)
Fix material/lamp drivers not working sometimes when they were used by multiple
objects, found while looking into another bug.
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c12
-rw-r--r--source/blender/blenkernel/intern/lamp.c6
-rw-r--r--source/blender/blenkernel/intern/material.c6
3 files changed, 16 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 1bae4ec68cc..86832a72b90 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -372,8 +372,8 @@ static void dag_add_material_driver_relations(DagForest *dag, DagNode *node, Mat
*/
if (ma->id.flag & LIB_DOIT)
return;
- else
- ma->id.flag |= LIB_DOIT;
+
+ ma->id.flag |= LIB_DOIT;
/* material itself */
if (ma->adt)
@@ -386,6 +386,8 @@ static void dag_add_material_driver_relations(DagForest *dag, DagNode *node, Mat
/* material's nodetree */
if (ma->nodetree)
dag_add_shader_nodetree_driver_relations(dag, node, ma->nodetree);
+
+ ma->id.flag &= ~LIB_DOIT;
}
/* recursive handling for lamp drivers */
@@ -397,8 +399,8 @@ static void dag_add_lamp_driver_relations(DagForest *dag, DagNode *node, Lamp *l
*/
if (la->id.flag & LIB_DOIT)
return;
- else
- la->id.flag |= LIB_DOIT;
+
+ la->id.flag |= LIB_DOIT;
/* lamp itself */
if (la->adt)
@@ -411,6 +413,8 @@ static void dag_add_lamp_driver_relations(DagForest *dag, DagNode *node, Lamp *l
/* lamp's nodetree */
if (la->nodetree)
dag_add_shader_nodetree_driver_relations(dag, node, la->nodetree);
+
+ la->id.flag &= ~LIB_DOIT;
}
static void dag_add_collision_field_relation(DagForest *dag, Scene *scene, Object *ob, DagNode *node, int skip_forcefield, bool no_collision)
diff --git a/source/blender/blenkernel/intern/lamp.c b/source/blender/blenkernel/intern/lamp.c
index 32cc5c6c22e..903b032e080 100644
--- a/source/blender/blenkernel/intern/lamp.c
+++ b/source/blender/blenkernel/intern/lamp.c
@@ -258,8 +258,8 @@ void lamp_drivers_update(Scene *scene, Lamp *la, float ctime)
* in the meantime... [#32017] */
if (la->id.flag & LIB_DOIT)
return;
- else
- la->id.flag |= LIB_DOIT;
+
+ la->id.flag |= LIB_DOIT;
/* lamp itself */
if (la->adt && la->adt->drivers.first)
@@ -268,5 +268,7 @@ void lamp_drivers_update(Scene *scene, Lamp *la, float ctime)
/* nodes */
if (la->nodetree)
lamp_node_drivers_update(scene, la->nodetree, ctime);
+
+ la->id.flag &= ~LIB_DOIT;
}
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index 7e70b9d9cd5..2b7a41933b4 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -1133,8 +1133,8 @@ void material_drivers_update(Scene *scene, Material *ma, float ctime)
*/
if (ma->id.flag & LIB_DOIT)
return;
- else
- ma->id.flag |= LIB_DOIT;
+
+ ma->id.flag |= LIB_DOIT;
/* material itself */
if (ma->adt && ma->adt->drivers.first) {
@@ -1145,6 +1145,8 @@ void material_drivers_update(Scene *scene, Material *ma, float ctime)
if (ma->nodetree) {
material_node_drivers_update(scene, ma->nodetree, ctime);
}
+
+ ma->id.flag &= ~LIB_DOIT;
}
/* ****************** */