diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2011-02-20 18:35:01 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2011-02-20 18:35:01 +0300 |
commit | 8c4e95da48b3b896f012d7a1b7c89841270c40c6 (patch) | |
tree | 240b500ec32f4fd909a1a4ecbce1e3fad97e9eec /source/blender/blenkernel/intern/subsurf_ccg.c | |
parent | c37884b015a949bd03d1dac890263c93285291a1 (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.c | 10 |
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; |