Revision: 30612
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30612
Author:   joeedh
Date:     2010-07-22 06:45:18 +0200 (Thu, 22 Jul 2010)

Log Message:
-----------
=bmesh= fkey for dissolve works again, also fixed a crasher

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenlib/intern/BLI_mempool.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
    branches/bmesh/blender/source/blender/bmesh/operators/createops.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c

Modified: branches/bmesh/blender/source/blender/blenlib/intern/BLI_mempool.c
===================================================================
--- branches/bmesh/blender/source/blender/blenlib/intern/BLI_mempool.c  
2010-07-22 04:06:13 UTC (rev 30611)
+++ branches/bmesh/blender/source/blender/blenlib/intern/BLI_mempool.c  
2010-07-22 04:45:18 UTC (rev 30612)
@@ -243,7 +243,7 @@
 {
        void *ret = NULL;
        
-       if (!iter->curchunk) return NULL;
+       if (!iter->curchunk || !iter->pool->totused) return NULL;
        
        ret = ((char*)iter->curchunk->data) + iter->pool->esize*iter->curindex;
        

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c        
2010-07-22 04:06:13 UTC (rev 30611)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c        
2010-07-22 04:45:18 UTC (rev 30612)
@@ -340,7 +340,7 @@
        /*create the face, if necassary*/
        if (!f && !overlap)
                f = BM_Make_Face(bm, verts, edges2, len);
-       else if (!overlap) 
+       else if (!overlap)
                f = NULL;
 
        /*clean up flags*/

Modified: branches/bmesh/blender/source/blender/bmesh/operators/createops.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/createops.c   
2010-07-22 04:06:13 UTC (rev 30611)
+++ branches/bmesh/blender/source/blender/bmesh/operators/createops.c   
2010-07-22 04:45:18 UTC (rev 30612)
@@ -15,6 +15,7 @@
 
 #define ELE_NEW                1
 #define ELE_OUT                2
+#define ELE_ORIG       4
 
 typedef struct EPathNode {
        struct EPathNode *next, *prev;
@@ -211,6 +212,10 @@
 
        edata = MEM_callocN(sizeof(EdgeData)*bm->totedge, "EdgeData");
        BMO_Flag_Buffer(bm, op, "edges", EDGE_MARK, BM_EDGE);
+       
+       BM_ITER(f, &iter, bm, BM_FACES_OF_MESH, NULL) {
+               BMO_SetFlag(bm, f, ELE_ORIG);
+       }
 
        i = 0;
        BM_ITER(e, &iter, bm, BM_EDGES_OF_MESH, NULL) {
@@ -263,7 +268,7 @@
                edges[i++] = edge;
 
                f = BM_Make_Ngon(bm, edge->v1, edge->v2, edges, i, 1);
-               if (f)
+               if (f && !BMO_TestFlag(bm, f, ELE_ORIG))
                        BMO_SetFlag(bm, f, FACE_NEW);
 
                edge_free_path(pathbase, path);

Modified: branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c    
2010-07-22 04:06:13 UTC (rev 30611)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c    
2010-07-22 04:45:18 UTC (rev 30612)
@@ -573,9 +573,8 @@
 }
 
 /* generic extern called extruder */
-int EDBM_Extrude_Mesh(Object *obedit, BMEditMesh *em, wmOperator *op, float 
*norin)
+int EDBM_Extrude_Mesh(Scene *scene, Object *obedit, BMEditMesh *em, wmOperator 
*op, float *norin)
 {
-       Scene *scene= NULL;             // XXX CTX!
        short nr, transmode= 0;
        float stacknor[3] = {0.0f, 0.0f, 0.0f};
        float *nor = norin ? norin : stacknor;
@@ -658,10 +657,11 @@
 /* extrude without transform */
 static int mesh_extrude_region_exec(bContext *C, wmOperator *op)
 {
+       Scene *scene = CTX_data_scene(C);
        Object *obedit= CTX_data_edit_object(C);
        BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh;
        
-       EDBM_Extrude_Mesh(obedit, em, op, NULL);
+       EDBM_Extrude_Mesh(scene, obedit, em, op, NULL);
        
        WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit);
        
@@ -2362,8 +2362,8 @@
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 
        /* properties */
-       prop= RNA_def_enum(ot->srna, "type", merge_type_items, 3, "Type", 
"Merge method to use.");
-       RNA_def_enum_funcs(prop, merge_type_itemf);
+       ot->prop= RNA_def_enum(ot->srna, "type", merge_type_items, 3, "Type", 
"Merge method to use.");
+       RNA_def_enum_funcs(ot->prop, merge_type_itemf);
        RNA_def_boolean(ot->srna, "uvs", 1, "UVs", "Move UVs according to 
merge.");
 }
 


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

Reply via email to