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>2020-07-21 04:25:03 +0300
committerPablo Dobarro <pablodp606@gmail.com>2020-07-27 23:04:31 +0300
commit00065269521186ba90d088ee2443d89fbcebfce0 (patch)
tree0ba45f63861dc60719d643426e875413599d2e71 /source/blender
parent7eebebebc7bb08621d97a8318a37366fbd7b02e8 (diff)
Fix T79074: Mesh Topology info not being updated after changes
All these data arrays are created for a specific topology, so they should be freed and updated when the PBVH rebuilds. Previously, this was only happening when freeing the SculptSession, but it also needs to happen in BKE_sculpt_update_object_before_eval to avoid reusing out of date data. Reviewed By: sergey Maniphest Tasks: T79074 Differential Revision: https://developer.blender.org/D8357
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/intern/paint.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 5feaacee254..d6fbba74a89 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -1314,6 +1314,13 @@ static void sculptsession_free_pbvh(Object *object)
MEM_SAFE_FREE(ss->preview_vert_index_list);
ss->preview_vert_index_count = 0;
+
+ MEM_SAFE_FREE(ss->preview_vert_index_list);
+
+ MEM_SAFE_FREE(ss->vertex_info.connected_component);
+ MEM_SAFE_FREE(ss->vertex_info.boundary);
+
+ MEM_SAFE_FREE(ss->fake_neighbors.fake_neighbor_index);
}
void BKE_sculptsession_bm_to_me_for_render(Object *object)
@@ -1366,13 +1373,6 @@ void BKE_sculptsession_free(Object *ob)
MEM_SAFE_FREE(ss->deform_cos);
MEM_SAFE_FREE(ss->deform_imats);
- MEM_SAFE_FREE(ss->preview_vert_index_list);
-
- MEM_SAFE_FREE(ss->vertex_info.connected_component);
- MEM_SAFE_FREE(ss->vertex_info.boundary);
-
- MEM_SAFE_FREE(ss->fake_neighbors.fake_neighbor_index);
-
if (ss->pose_ik_chain_preview) {
for (int i = 0; i < ss->pose_ik_chain_preview->tot_segments; i++) {
MEM_SAFE_FREE(ss->pose_ik_chain_preview->segments[i].weights);