diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-05-18 12:06:46 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-05-18 14:40:52 +0300 |
commit | 45afc02f11871b5c9f4d7bc6794761c6a4d883d8 (patch) | |
tree | ffc9f69056f8129d29b8aee30737a8d4545861c8 /source/blender/blenkernel/intern/object_update.c | |
parent | 61f9f508a4473e1d2bb353396717b4e1a085e646 (diff) |
Solve threading conflict related on proxy group's inverse matrix
It was possible that two threads will start calculating proxy group's inverted
matrix and store it in the object itself. This isn't good idea because it means
some threads might be using partially written matrix.
Diffstat (limited to 'source/blender/blenkernel/intern/object_update.c')
-rw-r--r-- | source/blender/blenkernel/intern/object_update.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/object_update.c b/source/blender/blenkernel/intern/object_update.c index d9373b9595a..483968c6bd9 100644 --- a/source/blender/blenkernel/intern/object_update.c +++ b/source/blender/blenkernel/intern/object_update.c @@ -318,8 +318,9 @@ void BKE_object_eval_uber_transform(EvaluationContext *UNUSED(eval_ctx), if (ob->proxy_from->proxy_group) { /* Transform proxy into group space. */ Object *obg = ob->proxy_from->proxy_group; - invert_m4_m4(obg->imat, obg->obmat); - mul_m4_m4m4(ob->obmat, obg->imat, ob->proxy_from->obmat); + float imat[4][4]; + invert_m4_m4(imat, obg->obmat); + mul_m4_m4m4(ob->obmat, imat, ob->proxy_from->obmat); /* Should always be true. */ if (obg->dup_group) { add_v3_v3(ob->obmat[3], obg->dup_group->dupli_ofs); |