Commit: f7945c659b0c2cf77cc4e9bdc3072c98f081835b
Author: Campbell Barton
Date:   Sat Sep 6 18:28:33 2014 +1000
Branches: master
https://developer.blender.org/rBf7945c659b0c2cf77cc4e9bdc3072c98f081835b

Knife: remove redundant allocations

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

M       source/blender/editors/mesh/editmesh_knife.c

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

diff --git a/source/blender/editors/mesh/editmesh_knife.c 
b/source/blender/editors/mesh/editmesh_knife.c
index 5955792..5b22c99 100644
--- a/source/blender/editors/mesh/editmesh_knife.c
+++ b/source/blender/editors/mesh/editmesh_knife.c
@@ -2387,12 +2387,12 @@ static void knife_make_face_cuts(KnifeTool_OpData *kcd, 
BMFace *f, ListBase *kfe
        KnifeEdge *kfe;
        BMFace *fnew, *fnew2, *fhole;
        ListBase *chain, *hole, *sidechain;
-       ListBase *fnew_kfedges, *fnew2_kfedges;
        Ref *ref, *refnext;
        int count, oldcount;
 
        oldcount = BLI_countlist(kfedges);
        while ((chain = find_chain(kcd, kfedges)) != NULL) {
+               ListBase fnew_kfedges;
                knife_make_chain_cut(kcd, f, chain, &fnew);
                if (!fnew) {
                        return;
@@ -2400,18 +2400,18 @@ static void knife_make_face_cuts(KnifeTool_OpData *kcd, 
BMFace *f, ListBase *kfe
 
                /* Move kfedges to fnew_kfedges if they are now in fnew.
                 * The chain edges were removed already */
-               fnew_kfedges = knife_empty_list(kcd);
+               BLI_listbase_clear(&fnew_kfedges);
                for (ref = kfedges->first; ref; ref = refnext) {
                        kfe = ref->ref;
                        refnext = ref->next;
                        if (knife_edge_in_face(kfe, fnew)) {
                                BLI_remlink(kfedges, ref);
                                kfe->basef = fnew;
-                               knife_append_list(kcd, fnew_kfedges, kfe);
+                               BLI_addtail(&fnew_kfedges, ref);
                        }
                }
-               if (fnew_kfedges->first)
-                       knife_make_face_cuts(kcd, fnew, fnew_kfedges);
+               if (fnew_kfedges.first)
+                       knife_make_face_cuts(kcd, fnew, &fnew_kfedges);
 
                /* find_chain should always remove edges if it returns true,
                 * but guard against infinite loop anyway */
@@ -2425,6 +2425,8 @@ static void knife_make_face_cuts(KnifeTool_OpData *kcd, 
BMFace *f, ListBase *kfe
 
        while ((hole = find_hole(kcd, kfedges)) != NULL) {
                if (find_hole_chains(kcd, hole, f, &chain, &sidechain)) {
+                       ListBase fnew_kfedges, fnew2_kfedges;
+
                        /* chain goes across f and sidechain comes back
                         * from the second last vertex to the second vertex.
                         */
@@ -2455,28 +2457,28 @@ static void knife_make_face_cuts(KnifeTool_OpData *kcd, 
BMFace *f, ListBase *kfe
                        BM_face_kill(bm, fhole);
                        /* Move kfedges to either fnew or fnew2 if appropriate.
                         * The hole edges were removed already */
-                       fnew_kfedges = knife_empty_list(kcd);
-                       fnew2_kfedges = knife_empty_list(kcd);
+                       BLI_listbase_clear(&fnew_kfedges);
+                       BLI_listbase_clear(&fnew2_kfedges);
                        for (ref = kfedges->first; ref; ref = refnext) {
                                kfe = ref->ref;
                                refnext = ref->next;
                                if (knife_edge_in_face(kfe, fnew)) {
                                        BLI_remlink(kfedges, ref);
                                        kfe->basef = fnew;
-                                       knife_append_list(kcd, fnew_kfedges, 
kfe);
+                                       BLI_addtail(&fnew_kfedges, ref);
                                }
                                else if (knife_edge_in_face(kfe, fnew2)) {
                                        BLI_remlink(kfedges, ref);
                                        kfe->basef = fnew2;
-                                       knife_append_list(kcd, fnew2_kfedges, 
kfe);
+                                       BLI_addtail(&fnew2_kfedges, ref);
                                }
                        }
                        /* We'll skip knife edges that are in the newly formed 
hole.
                         * (Maybe we shouldn't have made a hole in the first 
place?) */
-                       if (fnew != fhole && fnew_kfedges->first)
-                               knife_make_face_cuts(kcd, fnew, fnew_kfedges);
-                       if (fnew2 != fhole && fnew2_kfedges->first)
-                               knife_make_face_cuts(kcd, fnew2, fnew2_kfedges);
+                       if (fnew != fhole && fnew_kfedges.first)
+                               knife_make_face_cuts(kcd, fnew, &fnew_kfedges);
+                       if (fnew2 != fhole && fnew2_kfedges.first)
+                               knife_make_face_cuts(kcd, fnew2, 
&fnew2_kfedges);
                        if (f == fhole)
                                break;
                        /* find_hole should always remove edges if it returns 
true,

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to