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:
authorPablo Dobarro <pablodp606@gmail.com>2019-09-17 23:15:58 +0300
committerPablo Dobarro <pablodp606@gmail.com>2019-09-18 17:40:58 +0300
commita1318d241553246c266410eb1ae4ba23e73179e1 (patch)
tree441a61ae1129e3892a7eb787df560d50d3f67fd8 /source/blender/blenkernel/intern/paint.c
parent4dbea85a3fdbc9726a1e23d4f7a9ab767a12ddbb (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.c20
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);
}