diff options
author | Pablo Dobarro <pablodp606@gmail.com> | 2019-09-17 23:15:58 +0300 |
---|---|---|
committer | Pablo Dobarro <pablodp606@gmail.com> | 2019-09-18 17:40:58 +0300 |
commit | a1318d241553246c266410eb1ae4ba23e73179e1 (patch) | |
tree | 441a61ae1129e3892a7eb787df560d50d3f67fd8 /source/blender/blenkernel/intern/paint.c | |
parent | 4dbea85a3fdbc9726a1e23d4f7a9ab767a12ddbb (diff) |
Fix T69580: Smooth brush freezes on highpoly mesh
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D5831
Diffstat (limited to 'source/blender/blenkernel/intern/paint.c')
-rw-r--r-- | source/blender/blenkernel/intern/paint.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index 5980aa456e2..9c56e505d91 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -992,10 +992,24 @@ static void sculptsession_free_pbvh(Object *object) { SculptSession *ss = object->sculpt; - if (ss && ss->pbvh) { + if (!ss) { + return; + } + + if (ss->pbvh) { BKE_pbvh_free(ss->pbvh); ss->pbvh = NULL; } + + if (ss->pmap) { + MEM_freeN(ss->pmap); + ss->pmap = NULL; + } + + if (ss->pmap_mem) { + MEM_freeN(ss->pmap_mem); + ss->pmap_mem = NULL; + } } void BKE_sculptsession_bm_to_me_for_render(Object *object) @@ -1210,9 +1224,7 @@ static void sculpt_update_object( BLI_assert(pbvh == ss->pbvh); UNUSED_VARS_NDEBUG(pbvh); - MEM_SAFE_FREE(ss->pmap); - MEM_SAFE_FREE(ss->pmap_mem); - if (need_pmap && ob->type == OB_MESH) { + if (need_pmap && ob->type == OB_MESH && !ss->pmap) { BKE_mesh_vert_poly_map_create( &ss->pmap, &ss->pmap_mem, me->mpoly, me->mloop, me->totvert, me->totpoly, me->totloop); } |