[Bf-blender-cvs] [66bd1280483] temp-geometry-nodes-distribute-points-cleanup: Fix memleak on tiling
Dalai Felinto
noreply at git.blender.org
Fri Dec 11 16:38:33 CET 2020
Commit: 66bd128048339a39a9fa461d6ea266c59641e6f8
Author: Dalai Felinto
Date: Fri Dec 11 16:28:25 2020 +0100
Branches: temp-geometry-nodes-distribute-points-cleanup
https://developer.blender.org/rB66bd128048339a39a9fa461d6ea266c59641e6f8
Fix memleak on tiling
===================================================================
M source/blender/nodes/geometry/nodes/node_geo_point_distribute_poisson_disk.cc
===================================================================
diff --git a/source/blender/nodes/geometry/nodes/node_geo_point_distribute_poisson_disk.cc b/source/blender/nodes/geometry/nodes/node_geo_point_distribute_poisson_disk.cc
index 3e4a8a751f1..ef7a32a3b70 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_point_distribute_poisson_disk.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_point_distribute_poisson_disk.cc
@@ -161,7 +161,7 @@ static float weight_limit_fraction_get(const size_t input_size, const size_t out
* Tile the input points.
*/
static void points_tiling(Vector<float3> const *input_points,
- const void *kd_tree,
+ void **kd_tree,
const float maximum_distance,
const float3 boundbox)
@@ -173,9 +173,9 @@ static void points_tiling(Vector<float3> const *input_points,
/* Start building a kdtree for the samples. */
for (size_t i = 0; i < input_points->size(); i++) {
indices[i] = i;
- BLI_kdtree_3d_insert((KDTree_3d *)kd_tree, i, input_points->data()[i]);
+ BLI_kdtree_3d_insert(*(KDTree_3d **)kd_tree, i, input_points->data()[i]);
}
- BLI_kdtree_3d_balance((KDTree_3d *)kd_tree);
+ BLI_kdtree_3d_balance(*(KDTree_3d **)kd_tree);
/* Tile the tree based on the boundbox. */
for (size_t i = 0; i < input_points->size(); i++) {
@@ -183,14 +183,14 @@ static void points_tiling(Vector<float3> const *input_points,
}
/* Re-use the same kdtree, so free it before re-creating it. */
- BLI_kdtree_3d_free((KDTree_3d *)kd_tree);
+ BLI_kdtree_3d_free(*(KDTree_3d **)kd_tree);
/* Build a new tree with the new indices and tiled points. */
- kd_tree = BLI_kdtree_3d_new(tiled_points.size());
+ *kd_tree = BLI_kdtree_3d_new(tiled_points.size());
for (size_t i = 0; i < tiled_points.size(); i++) {
- BLI_kdtree_3d_insert((KDTree_3d *)kd_tree, indices[i], tiled_points[i]);
+ BLI_kdtree_3d_insert(*(KDTree_3d **)kd_tree, indices[i], tiled_points[i]);
}
- BLI_kdtree_3d_balance((KDTree_3d *)kd_tree);
+ BLI_kdtree_3d_balance(*(KDTree_3d **)kd_tree);
}
static void weighted_sample_elimination(Vector<float3> const *input_points,
@@ -204,7 +204,7 @@ static void weighted_sample_elimination(Vector<float3> const *input_points,
output_points->size());
void *kd_tree = BLI_kdtree_3d_new(input_points->size());
- points_tiling(input_points, kd_tree, maximum_distance, boundbox);
+ points_tiling(input_points, &kd_tree, maximum_distance, boundbox);
/* Assign weights to each sample. */
std::vector<float> weights(input_points->size(), 0.0f);
More information about the Bf-blender-cvs
mailing list