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.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.c')
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 962209bef87..d1d755bd697 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -3158,8 +3158,9 @@ int BKE_object_is_modified(Scene *scene, Object *ob) } else { ModifierData *md; + VirtualModifierData virtualModifierData; /* cloth */ - for (md = modifiers_getVirtualModifierList(ob); + for (md = modifiers_getVirtualModifierList(ob, &virtualModifierData); md && (flag != (eModifierMode_Render | eModifierMode_Realtime)); md = md->next) { @@ -3180,10 +3181,11 @@ int BKE_object_is_modified(Scene *scene, Object *ob) int BKE_object_is_deform_modified(Scene *scene, Object *ob) { ModifierData *md; + VirtualModifierData virtualModifierData; int flag = 0; /* cloth */ - for (md = modifiers_getVirtualModifierList(ob); + for (md = modifiers_getVirtualModifierList(ob, &virtualModifierData); md && (flag != (eModifierMode_Render | eModifierMode_Realtime)); md = md->next) { @@ -3205,8 +3207,9 @@ int BKE_object_is_deform_modified(Scene *scene, Object *ob) bool BKE_object_is_animated(Scene *scene, Object *ob) { ModifierData *md; + VirtualModifierData virtualModifierData; - for (md = modifiers_getVirtualModifierList(ob); md; md = md->next) + for (md = modifiers_getVirtualModifierList(ob, &virtualModifierData); md; md = md->next) if (modifier_dependsOnTime(md) && (modifier_isEnabled(scene, md, eModifierMode_Realtime) || modifier_isEnabled(scene, md, eModifierMode_Render))) |