[Bf-blender-cvs] [50ba4762f68] blender2.8: Fix T57566: Blender 2.8 crashes with the new multires

Sergey Sharybin noreply at git.blender.org
Fri Nov 16 10:34:29 CET 2018


Commit: 50ba4762f685996614f6585183fbe8085b89f27d
Author: Sergey Sharybin
Date:   Fri Nov 16 10:34:00 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB50ba4762f685996614f6585183fbe8085b89f27d

Fix T57566: Blender 2.8 crashes with the new multires

===================================================================

M	source/blender/blenkernel/intern/multires_reshape.c

===================================================================

diff --git a/source/blender/blenkernel/intern/multires_reshape.c b/source/blender/blenkernel/intern/multires_reshape.c
index fe4bc5ca3e0..72be2617798 100644
--- a/source/blender/blenkernel/intern/multires_reshape.c
+++ b/source/blender/blenkernel/intern/multires_reshape.c
@@ -875,8 +875,6 @@ static bool multires_reshape_from_vertcos(
 	Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
 	Mesh *coarse_mesh = object->data;
 	MDisps *mdisps = CustomData_get_layer(&coarse_mesh->ldata, CD_MDISPS);
-	/* Make sure displacement grids are ready. */
-	multires_reshape_ensure_grids(coarse_mesh, mmd->totlvl);
 	/* Pick maximum between multires level and dispalcement level.
 	 * This is because mesh can be used by objects with multires at different
 	 * levels.
@@ -885,6 +883,8 @@ static bool multires_reshape_from_vertcos(
 	 * mdisps->level.
 	 */
 	const int top_level = max_ii(mmd->totlvl, mdisps->level);
+	/* Make sure displacement grids are ready. */
+	multires_reshape_ensure_grids(coarse_mesh, top_level);
 	/* Construct context. */
 	MultiresReshapeFromDeformedVertsContext reshape_deformed_verts_ctx = {
 	        .reshape_ctx = {
@@ -1166,8 +1166,6 @@ bool multiresModifier_reshapeFromCCG(
 	GridPaintMask *grid_paint_mask =
 	        CustomData_get_layer(&coarse_mesh->ldata, CD_GRID_PAINT_MASK);
 	Subdiv *subdiv = subdiv_ccg->subdiv;
-	/* Make sure displacement grids are ready. */
-	multires_reshape_ensure_grids(coarse_mesh, tot_level);
 	/* Pick maximum between multires level and dispalcement level.
 	 * This is because mesh can be used by objects with multires at different
 	 * levels.
@@ -1176,6 +1174,8 @@ bool multiresModifier_reshapeFromCCG(
 	 * mdisps->level.
 	 */
 	const int top_level = max_ii(tot_level, mdisps->level);
+	/* Make sure displacement grids are ready. */
+	multires_reshape_ensure_grids(coarse_mesh, top_level);
 	/* Construct context. */
 	ReshapeFromCCGTaskData data = {
 	        .reshape_ctx = {



More information about the Bf-blender-cvs mailing list