[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52382] trunk/blender/source/blender: fix for changes in own recent commit:
Campbell Barton
ideasman42 at gmail.com
Tue Nov 20 00:52:25 CET 2012
Revision: 52382
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52382
Author: campbellbarton
Date: 2012-11-19 23:52:24 +0000 (Mon, 19 Nov 2012)
Log Message:
-----------
fix for changes in own recent commit:
selected linked in face mode was crashing. (needs bmesh operator flags)
also some style edits, remove unused includes and change triangulate modifiers use_beauty to a flag.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c
trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c
trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h
trunk/blender/source/blender/editors/mesh/editmesh_select.c
trunk/blender/source/blender/makesdna/DNA_modifier_types.h
trunk/blender/source/blender/makesrna/intern/rna_modifier.c
trunk/blender/source/blender/modifiers/intern/MOD_triangulate.c
Modified: trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c 2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/blenkernel/intern/cdderivedmesh.c 2012-11-19 23:52:24 UTC (rev 52382)
@@ -2560,7 +2560,7 @@
BLI_edgehashIterator_getKey(ehi, &med->v1, &med->v2);
j = GET_INT_FROM_POINTER(BLI_edgehashIterator_getValue(ehi));
- if(j == 0) {
+ if (j == 0) {
med->flag = ME_EDGEDRAW | ME_EDGERENDER;
*index = ORIGINDEX_NONE;
}
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c 2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh.c 2012-11-19 23:52:24 UTC (rev 52382)
@@ -92,6 +92,14 @@
}
}
+void BM_mesh_elem_toolflags_clear(BMesh *bm)
+{
+ if (bm->toolflagpool) {
+ BLI_mempool_destroy(bm->toolflagpool);
+ bm->toolflagpool = NULL;
+ }
+}
+
/**
* \brief BMesh Make Mesh
*
@@ -171,9 +179,7 @@
BLI_mempool_destroy(bm->fpool);
/* destroy flag pool */
- if (bm->toolflagpool) {
- BLI_mempool_destroy(bm->toolflagpool);
- }
+ BM_mesh_elem_toolflags_clear(bm);
#ifdef USE_BMESH_HOLES
BLI_mempool_destroy(bm->looplistpool);
Modified: trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h 2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_mesh.h 2012-11-19 23:52:24 UTC (rev 52382)
@@ -30,6 +30,7 @@
struct BMAllocTemplate;
void BM_mesh_elem_toolflags_ensure(BMesh *bm);
+void BM_mesh_elem_toolflags_clear(BMesh *bm);
BMesh *BM_mesh_create(struct BMAllocTemplate *allocsize);
void BM_mesh_free(BMesh *bm);
Modified: trunk/blender/source/blender/editors/mesh/editmesh_select.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_select.c 2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/editors/mesh/editmesh_select.c 2012-11-19 23:52:24 UTC (rev 52382)
@@ -2330,6 +2330,8 @@
}
if (limit) {
+ /* grr, shouldn't need to alloca BMO flags here */
+ BM_mesh_elem_toolflags_ensure(bm);
BM_ITER_MESH (e, &iter, bm, BM_EDGES_OF_MESH) {
/* BMESH_TODO, don't use 'BM_ELEM_SELECT' here, its a HFLAG only! */
BMO_elem_flag_set(bm, e, BM_ELEM_SELECT, !BM_elem_flag_test(e, BM_ELEM_SEAM));
@@ -2350,6 +2352,10 @@
}
}
BMW_end(&walker);
+
+ if (limit) {
+ BM_mesh_elem_toolflags_clear(bm);
+ }
}
else {
BM_ITER_MESH (v, &iter, em->bm, BM_VERTS_OF_MESH) {
Modified: trunk/blender/source/blender/makesdna/DNA_modifier_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_modifier_types.h 2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/makesdna/DNA_modifier_types.h 2012-11-19 23:52:24 UTC (rev 52382)
@@ -1119,10 +1119,14 @@
typedef struct TriangulateModifierData {
ModifierData modifier;
- int beauty;
+ int flag;
int pad;
} TriangulateModifierData;
+enum {
+ MOD_TRIANGULATE_BEAUTY = (1 << 0),
+};
+
/* Smooth modifier flags */
#define MOD_LAPLACIANSMOOTH_X (1<<1)
#define MOD_LAPLACIANSMOOTH_Y (1<<2)
Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c 2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c 2012-11-19 23:52:24 UTC (rev 52382)
@@ -3375,10 +3375,9 @@
RNA_def_struct_ui_icon(srna, ICON_MOD_TRIANGULATE);
prop = RNA_def_property(srna, "use_beauty", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "beauty", 1);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_TRIANGULATE_BEAUTY);
RNA_def_property_ui_text(prop, "Beauty Subdivide", "Subdivide across shortest diagonal");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
-
}
void RNA_def_modifier(BlenderRNA *brna)
Modified: trunk/blender/source/blender/modifiers/intern/MOD_triangulate.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_triangulate.c 2012-11-19 23:35:38 UTC (rev 52381)
+++ trunk/blender/source/blender/modifiers/intern/MOD_triangulate.c 2012-11-19 23:52:24 UTC (rev 52382)
@@ -24,47 +24,40 @@
/** \file blender/modifiers/intern/MOD_triangulate.c
* \ingroup modifiers
*/
-#include <string.h>
-#include "MEM_guardedalloc.h"
-
-#include "DNA_mesh_types.h"
-#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
-#include "DNA_modifier_types.h"
#include "BLI_utildefines.h"
-#include "BLI_string.h"
-#include "BLI_array.h"
#include "BKE_cdderivedmesh.h"
-#include "BKE_deform.h"
-#include "BKE_DerivedMesh.h"
-#include "BKE_mesh.h"
#include "BKE_modifier.h"
#include "BKE_tessmesh.h"
-#include "MOD_util.h"
-
/* triangulation modifier, directly calls the bmesh operator */
-static DerivedMesh *triangulate(DerivedMesh *dm, char use_beauty)
+static DerivedMesh *triangulate_dm(DerivedMesh *dm, const int flag)
{
DerivedMesh *result;
BMesh *bm;
bm = DM_to_bmesh(dm);
+
BM_mesh_elem_toolflags_ensure(bm);
BMO_push(bm, NULL);
- BMO_op_callf(bm, BMO_FLAG_DEFAULTS,
- "triangulate faces=%af use_beauty=%b", use_beauty);
+ BMO_op_callf(bm, BMO_FLAG_DEFAULTS,
+ "triangulate faces=%af use_beauty=%b",
+ (flag & MOD_TRIANGULATE_BEAUTY));
BMO_pop(bm);
result = CDDM_from_bmesh(bm, FALSE);
BM_mesh_free(bm);
+ /* we don't really need to calc edges,
+ * this is called to update the origindex values
+ * This could be made into a different function? - Campbell */
CDDM_calc_edges(result);
+
CDDM_calc_normals(result);
return result;
@@ -77,7 +70,7 @@
/* Enable in editmode by default */
md->mode |= eModifierMode_Editmode;
- tmd->beauty = TRUE;
+ tmd->flag = MOD_TRIANGULATE_BEAUTY;
}
@@ -96,7 +89,7 @@
{
TriangulateModifierData *tmd = (TriangulateModifierData *)md;
DerivedMesh *result;
- if (!(result = triangulate(dm, tmd->beauty))) {
+ if (!(result = triangulate_dm(dm, tmd->flag))) {
return dm;
}
@@ -110,7 +103,7 @@
{
TriangulateModifierData *tmd = (TriangulateModifierData *)md;
DerivedMesh *result;
- if(!(result = triangulate(dm, tmd->beauty))) {
+ if (!(result = triangulate_dm(dm, tmd->flag))) {
return dm;
}
@@ -123,10 +116,10 @@
/* structSize */ sizeof(TriangulateModifierData),
/* type */ eModifierTypeType_Constructive,
/* flags */ eModifierTypeFlag_AcceptsMesh |
- eModifierTypeFlag_SupportsEditmode |
- eModifierTypeFlag_SupportsMapping |
- eModifierTypeFlag_EnableInEditmode |
- eModifierTypeFlag_AcceptsCVs,
+ eModifierTypeFlag_SupportsEditmode |
+ eModifierTypeFlag_SupportsMapping |
+ eModifierTypeFlag_EnableInEditmode |
+ eModifierTypeFlag_AcceptsCVs,
/* copyData */ copyData,
/* deformVerts */ NULL,
More information about the Bf-blender-cvs
mailing list