From 17ebbc06e2ea6324c27e0a10ae088c271b66d0cc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 12 Jul 2015 03:49:47 +1000 Subject: Use const for sculpt vars resolves building with gcc4.9 --- source/blender/blenkernel/BKE_pbvh.h | 19 ++--- source/blender/blenkernel/intern/pbvh.c | 88 ++++++++++++++--------- source/blender/blenkernel/intern/pbvh_intern.h | 4 +- source/blender/editors/sculpt_paint/paint_hide.c | 2 +- source/blender/editors/sculpt_paint/sculpt_undo.c | 6 +- 5 files changed, 71 insertions(+), 48 deletions(-) (limited to 'source') diff --git a/source/blender/blenkernel/BKE_pbvh.h b/source/blender/blenkernel/BKE_pbvh.h index 9cefdd4f28e..0832e2498d4 100644 --- a/source/blender/blenkernel/BKE_pbvh.h +++ b/source/blender/blenkernel/BKE_pbvh.h @@ -174,13 +174,16 @@ void BKE_pbvh_node_mark_normals_update(PBVHNode *node); void BKE_pbvh_node_mark_topology_update(PBVHNode *node); void BKE_pbvh_node_fully_hidden_set(PBVHNode *node, int fully_hidden); -void BKE_pbvh_node_get_grids(PBVH *bvh, PBVHNode *node, - int **grid_indices, int *totgrid, int *maxgrid, int *gridsize, - struct CCGElem ***grid_elems); -void BKE_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node, - int *uniquevert, int *totvert); -void BKE_pbvh_node_get_verts(PBVH *bvh, PBVHNode *node, - int **vert_indices, struct MVert **verts); +void BKE_pbvh_node_get_grids( + PBVH *bvh, PBVHNode *node, + int **grid_indices, int *totgrid, int *maxgrid, int *gridsize, + struct CCGElem ***grid_elems); +void BKE_pbvh_node_num_verts( + PBVH *bvh, PBVHNode *node, + int *r_uniquevert, int *r_totvert); +void BKE_pbvh_node_get_verts( + PBVH *bvh, PBVHNode *node, + const int **r_vert_indices, struct MVert **r_verts); void BKE_pbvh_node_get_BB(PBVHNode *node, float bb_min[3], float bb_max[3]); void BKE_pbvh_node_get_original_BB(PBVHNode *node, float bb_min[3], float bb_max[3]); @@ -252,7 +255,7 @@ typedef struct PBVHVertexIter { /* mesh */ struct MVert *mverts; int totvert; - int *vert_indices; + const int *vert_indices; float *vmask; /* bmesh */ diff --git a/source/blender/blenkernel/intern/pbvh.c b/source/blender/blenkernel/intern/pbvh.c index a015e8427c2..361557633cb 100644 --- a/source/blender/blenkernel/intern/pbvh.c +++ b/source/blender/blenkernel/intern/pbvh.c @@ -280,6 +280,8 @@ static void build_mesh_leaf_node(PBVH *bvh, PBVHNode *node) GHash *map; int i, j, totface; bool has_visible = false; + int (*face_vert_indices)[4]; + int *vert_indices; node->uniq_verts = node->face_verts = 0; totface = node->totprim; @@ -287,15 +289,17 @@ static void build_mesh_leaf_node(PBVH *bvh, PBVHNode *node) /* reserve size is rough guess */ map = BLI_ghash_int_new_ex("build_mesh_leaf_node gh", 2 * totface); - node->face_vert_indices = MEM_callocN(sizeof(int) * 4 * totface, - "bvh node face vert indices"); + face_vert_indices = MEM_callocN(sizeof(int[4]) * totface, + "bvh node face vert indices"); + + node->face_vert_indices = (const int (*)[4])face_vert_indices; for (i = 0; i < totface; ++i) { const MFace *f = &bvh->faces[node->prim_indices[i]]; int sides = f->v4 ? 4 : 3; for (j = 0; j < sides; ++j) { - node->face_vert_indices[i][j] = + face_vert_indices[i][j] = map_insert_vert(bvh, map, &node->face_verts, &node->uniq_verts, (&f->v1)[j]); } @@ -304,9 +308,10 @@ static void build_mesh_leaf_node(PBVH *bvh, PBVHNode *node) has_visible = true; } - node->vert_indices = MEM_callocN(sizeof(int) * - (node->uniq_verts + node->face_verts), - "bvh node vert indices"); + vert_indices = MEM_callocN(sizeof(int) * + (node->uniq_verts + node->face_verts), + "bvh node vert indices"); + node->vert_indices = vert_indices; /* Build the vertex list, unique verts first */ GHASH_ITER (gh_iter, map) { @@ -316,7 +321,7 @@ static void build_mesh_leaf_node(PBVH *bvh, PBVHNode *node) if (ndx < 0) ndx = -ndx + node->uniq_verts - 1; - node->vert_indices[ndx] = + vert_indices[ndx] = GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(&gh_iter)); } @@ -325,9 +330,9 @@ static void build_mesh_leaf_node(PBVH *bvh, PBVHNode *node) int sides = f->v4 ? 4 : 3; for (j = 0; j < sides; ++j) { - if (node->face_vert_indices[i][j] < 0) - node->face_vert_indices[i][j] = - -node->face_vert_indices[i][j] + + if (face_vert_indices[i][j] < 0) + face_vert_indices[i][j] = + -face_vert_indices[i][j] + node->uniq_verts - 1; } } @@ -633,9 +638,9 @@ void BKE_pbvh_free(PBVH *bvh) if (node->draw_buffers) GPU_free_pbvh_buffers(node->draw_buffers); if (node->vert_indices) - MEM_freeN(node->vert_indices); + MEM_freeN((void *)node->vert_indices); if (node->face_vert_indices) - MEM_freeN(node->face_vert_indices); + MEM_freeN((void *)node->face_vert_indices); BKE_pbvh_node_layer_disp_free(node); if (node->bm_faces) @@ -1016,7 +1021,8 @@ static void pbvh_update_normals(PBVH *bvh, PBVHNode **nodes, PBVHNode *node = nodes[n]; if (node->flag & PBVH_UpdateNormals) { - int i, *verts, totvert; + const int *verts; + int i, totvert; verts = node->vert_indices; totvert = node->uniq_verts; @@ -1357,51 +1363,62 @@ void BKE_pbvh_node_fully_hidden_set(PBVHNode *node, int fully_hidden) node->flag &= ~PBVH_FullyHidden; } -void BKE_pbvh_node_get_verts(PBVH *bvh, PBVHNode *node, int **vert_indices, MVert **verts) +void BKE_pbvh_node_get_verts( + PBVH *bvh, PBVHNode *node, + const int **r_vert_indices, MVert **r_verts) { - if (vert_indices) *vert_indices = node->vert_indices; - if (verts) *verts = bvh->verts; + if (r_vert_indices) { + *r_vert_indices = node->vert_indices; + } + + if (r_verts) { + *r_verts = bvh->verts; + } } -void BKE_pbvh_node_num_verts(PBVH *bvh, PBVHNode *node, int *uniquevert, int *totvert) +void BKE_pbvh_node_num_verts( + PBVH *bvh, PBVHNode *node, + int *r_uniquevert, int *r_totvert) { int tot; switch (bvh->type) { case PBVH_GRIDS: tot = node->totprim * bvh->gridkey.grid_area; - if (totvert) *totvert = tot; - if (uniquevert) *uniquevert = tot; + if (r_totvert) *r_totvert = tot; + if (r_uniquevert) *r_uniquevert = tot; break; case PBVH_FACES: - if (totvert) *totvert = node->uniq_verts + node->face_verts; - if (uniquevert) *uniquevert = node->uniq_verts; + if (r_totvert) *r_totvert = node->uniq_verts + node->face_verts; + if (r_uniquevert) *r_uniquevert = node->uniq_verts; break; case PBVH_BMESH: tot = BLI_gset_size(node->bm_unique_verts); - if (totvert) *totvert = tot + BLI_gset_size(node->bm_other_verts); - if (uniquevert) *uniquevert = tot; + if (r_totvert) *r_totvert = tot + BLI_gset_size(node->bm_other_verts); + if (r_uniquevert) *r_uniquevert = tot; break; } } -void BKE_pbvh_node_get_grids(PBVH *bvh, PBVHNode *node, int **grid_indices, int *totgrid, int *maxgrid, int *gridsize, CCGElem ***griddata) +void BKE_pbvh_node_get_grids( + PBVH *bvh, PBVHNode *node, + int **r_grid_indices, int *r_totgrid, int *r_maxgrid, int *r_gridsize, CCGElem ***r_griddata) { switch (bvh->type) { case PBVH_GRIDS: - if (grid_indices) *grid_indices = node->prim_indices; - if (totgrid) *totgrid = node->totprim; - if (maxgrid) *maxgrid = bvh->totgrid; - if (gridsize) *gridsize = bvh->gridkey.grid_size; - if (griddata) *griddata = bvh->grids; + if (r_grid_indices) *r_grid_indices = node->prim_indices; + if (r_totgrid) *r_totgrid = node->totprim; + if (r_maxgrid) *r_maxgrid = bvh->totgrid; + if (r_gridsize) *r_gridsize = bvh->gridkey.grid_size; + if (r_griddata) *r_griddata = bvh->grids; break; case PBVH_FACES: case PBVH_BMESH: - if (grid_indices) *grid_indices = NULL; - if (totgrid) *totgrid = 0; - if (maxgrid) *maxgrid = 0; - if (gridsize) *gridsize = 0; - if (griddata) *griddata = NULL; + if (r_grid_indices) *r_grid_indices = NULL; + if (r_totgrid) *r_totgrid = 0; + if (r_maxgrid) *r_maxgrid = 0; + if (r_gridsize) *r_gridsize = 0; + if (r_griddata) *r_griddata = NULL; break; } } @@ -1963,7 +1980,8 @@ void pbvh_vertex_iter_init(PBVH *bvh, PBVHNode *node, { struct CCGElem **grids; struct MVert *verts; - int *grid_indices, *vert_indices; + const int *vert_indices; + int *grid_indices; int totgrid, gridsize, uniq_verts, totvert; vi->grid = NULL; diff --git a/source/blender/blenkernel/intern/pbvh_intern.h b/source/blender/blenkernel/intern/pbvh_intern.h index 5bb90af889e..74897d6f4cd 100644 --- a/source/blender/blenkernel/intern/pbvh_intern.h +++ b/source/blender/blenkernel/intern/pbvh_intern.h @@ -76,7 +76,7 @@ struct PBVHNode { * * Used for leaf nodes in a mesh-based PBVH (not multires.) */ - int *vert_indices; + const int *vert_indices; unsigned int uniq_verts, face_verts; /* An array mapping face corners into the vert_indices @@ -88,7 +88,7 @@ struct PBVHNode { * * Used for leaf nodes in a mesh-based PBVH (not multires.) */ - int (*face_vert_indices)[4]; + const int (*face_vert_indices)[4]; /* Indicates whether this node is a leaf or not; also used for * marking various updates that need to be applied. */ diff --git a/source/blender/editors/sculpt_paint/paint_hide.c b/source/blender/editors/sculpt_paint/paint_hide.c index 52a60347f9f..2f1d4cd4194 100644 --- a/source/blender/editors/sculpt_paint/paint_hide.c +++ b/source/blender/editors/sculpt_paint/paint_hide.c @@ -98,7 +98,7 @@ static void partialvis_update_mesh(Object *ob, Mesh *me = ob->data; MVert *mvert; const float *paint_mask; - int *vert_indices; + const int *vert_indices; int totvert, i; bool any_changed = false, any_visible = false; diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c index 2f0957c3b60..c4556a5e145 100644 --- a/source/blender/editors/sculpt_paint/sculpt_undo.c +++ b/source/blender/editors/sculpt_paint/sculpt_undo.c @@ -695,7 +695,8 @@ static void sculpt_undo_store_hidden(Object *ob, SculptUndoNode *unode) } else { MVert *mvert; - int *vert_indices, allvert; + const int *vert_indices; + int allvert; int i; BKE_pbvh_node_num_verts(pbvh, node, NULL, &allvert); @@ -846,7 +847,8 @@ SculptUndoNode *sculpt_undo_push_node(Object *ob, PBVHNode *node, memcpy(unode->grids, grids, sizeof(int) * totgrid); } else { - int *vert_indices, allvert; + const int *vert_indices; + int allvert; BKE_pbvh_node_num_verts(ss->pbvh, node, NULL, &allvert); BKE_pbvh_node_get_verts(ss->pbvh, node, &vert_indices, NULL); memcpy(unode->index, vert_indices, sizeof(int) * unode->totvert); -- cgit v1.2.3