bmesh: use fixed stack size for face flipping array.
authorCampbell Barton <ideasman42@gmail.com>
Wed, 2 May 2012 11:10:54 +0000 (11:10 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 2 May 2012 11:10:54 +0000 (11:10 +0000)
also quiet unused var warnings

source/blender/bmesh/intern/bmesh_core.c
source/blender/editors/space_node/drawnode.c
source/blender/editors/space_view3d/drawmesh.c
source/blender/editors/space_view3d/drawobject.c
source/blender/editors/space_view3d/view3d_intern.h

index f38c737b8ac3fd1382cb92a20bd99efd81e8d763..e20eb103e1b09a8ed222e28c46478449443cd492 100644 (file)
@@ -582,6 +582,9 @@ void BM_face_verts_kill(BMesh *bm, BMFace *f)
        BLI_array_free(verts);
 }
 
+/**
+ * Kills \a f and its loops.
+ */
 void BM_face_kill(BMesh *bm, BMFace *f)
 {
 #ifdef USE_BMESH_HOLES
@@ -671,7 +674,10 @@ void BM_vert_kill(BMesh *bm, BMVert *v)
 
 /********** private disk and radial cycle functions ********** */
 
-static int bm_loop_length(BMLoop *l)
+/**
+ * return the length of the face, should always equal \a l->f->len
+ */
+static int UNUSED_FUNCTION(bm_loop_length)(BMLoop *l)
 {
        BMLoop *l_first = l;
        int i = 0;
@@ -707,18 +713,15 @@ static int bm_loop_reverse_loop(BMesh *bm, BMFace *f
        BMLoop *l_first = f->l_first;
 #endif
 
+       const int len = f->len;
+       const int do_disps = CustomData_has_layer(&bm->ldata, CD_MDISPS);
        BMLoop *l_iter, *oldprev, *oldnext;
        BMEdge **edar = NULL;
-       MDisps *md;
-       BLI_array_staticdeclare(edar, BM_NGON_STACK_SIZE);
-       int i, j, edok, len = 0, do_disps = CustomData_has_layer(&bm->ldata, CD_MDISPS);
-
-       len = bm_loop_length(l_first);
+       BLI_array_fixedstack_declare(edar, BM_NGON_STACK_SIZE, len, __func__);
+       int i, j, edok;
 
        for (i = 0, l_iter = l_first; i < len; i++, l_iter = l_iter->next) {
-               BMEdge *curedge = l_iter->e;
-               bmesh_radial_loop_remove(l_iter, curedge);
-               BLI_array_append(edar, curedge);
+               bmesh_radial_loop_remove(l_iter, (edar[i] = l_iter->e));
        }
 
        /* actually reverse the loop */
@@ -732,6 +735,7 @@ static int bm_loop_reverse_loop(BMesh *bm, BMFace *f
                if (do_disps) {
                        float (*co)[3];
                        int x, y, sides;
+                       MDisps *md;
                        
                        md = CustomData_bmesh_get(&bm->ldata, l_iter->head.data, CD_MDISPS);
                        if (!md->totdisp || !md->disps)
@@ -777,7 +781,7 @@ static int bm_loop_reverse_loop(BMesh *bm, BMFace *f
                BM_CHECK_ELEMENT(l_iter->f);
        }
 
-       BLI_array_free(edar);
+       BLI_array_fixedstack_free(edar);
 
        BM_CHECK_ELEMENT(f);
 
index 69e5cbefde53fd08e1bf327374ffa0b8b8fc0deb..bfa8111af3ead81172cd536355025136bc4cc1f9 100644 (file)
@@ -1756,7 +1756,7 @@ static void node_composit_buts_file_output_details(uiLayout *layout, bContext *C
 {
        PointerRNA imfptr = RNA_pointer_get(ptr, "format");
        PointerRNA active_input_ptr, op_ptr;
-       uiLayout *col, *row;
+       uiLayout *row;
        int active_index;
        int multilayer = (RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_MULTILAYER);
        
index e2a7478bc8fb9ff2613502b3f19468a621ed0622..524b66c852c3ea5584ab2cd0fe0c879bd31baaec 100644 (file)
@@ -933,7 +933,7 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *o
                return;
        }
        else if (ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT)) {
-               draw_mesh_paint(scene, v3d, rv3d, ob, dm, draw_flags);
+               draw_mesh_paint(rv3d, ob, dm, draw_flags);
                return;
        }
 
@@ -1002,7 +1002,7 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *o
 
 /* Vertex Paint and Weight Paint */
 
-void draw_mesh_paint(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, DerivedMesh *dm, int draw_flags)
+void draw_mesh_paint(RegionView3D *rv3d, Object *ob, DerivedMesh *dm, int draw_flags)
 {
        DMSetDrawOptions facemask = NULL;
        Mesh *me = ob->data;
index 66aa6b60b34b73eb00a78be39b3bec3d813334c4..585fc43e5c23b6547cbba990dff766040f1aa3cd 100644 (file)
@@ -3474,7 +3474,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D
                }
        }
        else if (dt == OB_PAINT) {
-               draw_mesh_paint(scene, v3d, rv3d, ob, dm, draw_flags);
+               draw_mesh_paint(rv3d, ob, dm, draw_flags);
        }
        
        /* set default draw color back for wire or for draw-extra later on */
index 0a6e0da8247f00ddbc637ce44d2e99fd8ba33533..66b8ceb7a85f2868fc1ad2bc9862d6fdf3336ae1 100644 (file)
@@ -130,7 +130,7 @@ int draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt, in
 
 /* drawmesh.c */
 void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, struct Object *ob, struct DerivedMesh *dm, int faceselect);
-void draw_mesh_paint(Scene *scene, View3D *v3d, RegionView3D *rv3d, struct Object *ob, struct DerivedMesh *dm, int faceselect);
+void draw_mesh_paint(RegionView3D *rv3d, struct Object *ob, struct DerivedMesh *dm, int faceselect);
 
 /* view3d_draw.c */
 void view3d_main_area_draw(const struct bContext *C, struct ARegion *ar);