diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-08-19 13:05:34 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2013-08-19 13:05:34 +0400 |
commit | beffaa293ee2b111f256b989bd038460bde1eea0 (patch) | |
tree | 9dbb83497da3cc5ed65d902666d094729c50f21e /source/blender/blenkernel/intern/object_deform.c | |
parent | a14febc70a0f8cb1ec8082600104a6629b0a20ee (diff) |
Made modifiers_getVirtualModifierList safe for threading
Move static variables to context filling in by this fcuntion
and owned by a callee function. This ensures no conflicts
between threads happens because of static variables used in
this function.
Also moved modifier types and virtual modifiers data to a
function called from creator. This is needed to be sure all
the information is properly initialied to the time when
threads starts to use this data.
--
svn merge -r57899:57900 ^/branches/soc-2013-depsgraph_mt
Diffstat (limited to 'source/blender/blenkernel/intern/object_deform.c')
-rw-r--r-- | source/blender/blenkernel/intern/object_deform.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/object_deform.c b/source/blender/blenkernel/intern/object_deform.c index ca38aa42928..9cb7c91decd 100644 --- a/source/blender/blenkernel/intern/object_deform.c +++ b/source/blender/blenkernel/intern/object_deform.c @@ -73,6 +73,7 @@ bool *BKE_objdef_validmap_get(Object *ob, const int defbase_tot) GHash *gh; int i, step1 = 1; //int defbase_tot = BLI_countlist(&ob->defbase); + VirtualModifierData virtualModifierData; if (ob->defbase.first == NULL) { return NULL; @@ -88,7 +89,7 @@ bool *BKE_objdef_validmap_get(Object *ob, const int defbase_tot) BLI_assert(BLI_ghash_size(gh) == defbase_tot); /* now loop through the armature modifiers and identify deform bones */ - for (md = ob->modifiers.first; md; md = !md->next && step1 ? (step1 = 0), modifiers_getVirtualModifierList(ob) : md->next) { + for (md = ob->modifiers.first; md; md = !md->next && step1 ? (step1 = 0), modifiers_getVirtualModifierList(ob, &virtualModifierData) : md->next) { if (!(md->mode & (eModifierMode_Realtime | eModifierMode_Virtual))) continue; |