diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-05-03 17:58:37 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-05-03 18:13:01 +0400 |
commit | e08db08a84bffaab27bc4562fd41f44756eb2e3e (patch) | |
tree | 56f9c70d7c28f4fd99f8f7e150035c9936b842a5 /source/blender/blenkernel/BKE_DerivedMesh.h | |
parent | 48c1a7f8a45f1474c1484950687f0f30612a1731 (diff) |
Fix T39997: Multiple boolean modifiers sharing the same right operand crashes
The issue was caused by the temporary CD layers being allocated for subsurf
meshes, same as we've got back in 881fb43.
In the long run this temporary storage is to be re-considered, but it'll also
imply re-considering of the Derivedmesh interaction as well. For now let's
use a simpler solution which is forbidding modifiers to call getArray for other
objects' derivedMeshes but use an API calls which would allocate local copy of
the data preventing race condition of shared data in DM.
Diffstat (limited to 'source/blender/blenkernel/BKE_DerivedMesh.h')
-rw-r--r-- | source/blender/blenkernel/BKE_DerivedMesh.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index 60920aa1bb5..1ab5ec51de8 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -762,4 +762,10 @@ BLI_INLINE int DM_origindex_mface_mpoly(const int *index_mf_to_mpoly, const int return (j != ORIGINDEX_NONE) ? (index_mp_to_orig ? index_mp_to_orig[j] : j) : ORIGINDEX_NONE; } +struct MVert *DM_get_vert_array(struct DerivedMesh *dm, bool *allocated); +struct MEdge *DM_get_edge_array(struct DerivedMesh *dm, bool *allocated); +struct MLoop *DM_get_loop_array(struct DerivedMesh *dm, bool *allocated); +struct MPoly *DM_get_poly_array(struct DerivedMesh *dm, bool *allocated); +struct MFace *DM_get_tessface_array(struct DerivedMesh *dm, bool *allocated); + #endif /* __BKE_DERIVEDMESH_H__ */ |