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:
authorSergey Sharybin <sergey.vfx@gmail.com>2011-02-20 18:35:01 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2011-02-20 18:35:01 +0300
commit8c4e95da48b3b896f012d7a1b7c89841270c40c6 (patch)
tree240b500ec32f4fd909a1a4ecbce1e3fad97e9eec /source/blender/blenkernel/intern/subsurf_ccg.c
parentc37884b015a949bd03d1dac890263c93285291a1 (diff)
Fix for crash when sculpting on multires object during playback
- Restored BLI_pbvh_grids_update stuff; - Marc all nodes as changes in ED_sculpt_modifiers_changed, so draw_buffers would be keept correct.
Diffstat (limited to 'source/blender/blenkernel/intern/subsurf_ccg.c')
-rw-r--r--source/blender/blenkernel/intern/subsurf_ccg.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c b/source/blender/blenkernel/intern/subsurf_ccg.c
index 0889f490e79..9b4b9a78dd4 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -2251,8 +2251,16 @@ static struct PBVH *ccgDM_getPBVH(Object *ob, DerivedMesh *dm)
if(!ob->sculpt)
return NULL;
- if(ob->sculpt->pbvh)
+ if(ob->sculpt->pbvh) {
+ /* pbvh's grids, gridadj and gridfaces points to data inside ccgdm
+ but this can be freed on ccgdm release, this updates the pointers
+ when the ccgdm gets remade, the assumption is that the topology
+ does not change. */
+ ccgdm_create_grids(dm);
+ BLI_pbvh_grids_update(ob->sculpt->pbvh, ccgdm->gridData, ccgdm->gridAdjacency, (void**)ccgdm->gridFaces);
+
ccgdm->pbvh = ob->sculpt->pbvh;
+ }
if(ccgdm->pbvh)
return ccgdm->pbvh;