[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22472] branches/bmesh/blender/source/ blender: made the crash handler disabled by a command line flag, insted of being #ifdef'd out on release builds.

Joseph Eagar joeedh at gmail.com
Sat Aug 15 19:31:28 CEST 2009


Revision: 22472
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22472
Author:   joeedh
Date:     2009-08-15 19:31:28 +0200 (Sat, 15 Aug 2009)

Log Message:
-----------
made the crash handler disabled by a command line flag, insted of being #ifdef'd out on release builds. also did little bit of work on subsurf.  and face select can now deselect again, and fixed some other bugs with it (and subsurf).

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/BKE_DerivedMesh.h
    branches/bmesh/blender/source/blender/blenkernel/intern/CCGSubSurf.c
    branches/bmesh/blender/source/blender/blenkernel/intern/CCGSubSurf.h
    branches/bmesh/blender/source/blender/blenkernel/intern/DerivedMesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c
    branches/bmesh/blender/source/blender/blenkernel/intern/particle_system.c
    branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
    branches/bmesh/blender/source/blender/editors/space_view3d/drawobject.c

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_DerivedMesh.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_DerivedMesh.h	2009-08-15 16:43:03 UTC (rev 22471)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_DerivedMesh.h	2009-08-15 17:31:28 UTC (rev 22472)
@@ -124,6 +124,19 @@
 	  loop refers to per-face-vertex data.*/
 	void *(*getLoopCDData)(void *self, int type, int layer);
 	void *(*getVertCDData)(void *self, int type, int layer);
+	
+/* derivedmesh 2.0 interface ideas (will likely never be implemented ;):
+        void (*interpLoopData)(void *self, void **src_blocks, 
+	                       float *weights, float *sub_weights, int count);
+
+        //a generic handle for a loop
+	intptr_t lhandle;
+
+	inside DerivedMesh itself:
+	//
+	//void (*interpLoopData)(DerivedMesh *dm, DMLoopIter *destloop, 
+	//                       intptr_t *loop_handles, int totloop);
+*/
 } DMLoopIter;
 
 typedef struct DMFaceIter {
@@ -227,7 +240,7 @@
 	void (*copyFromVertCData)(DerivedMesh *dm, int source, CustomData *dst, int dest);
 	void (*copyFromEdgeCData)(DerivedMesh *dm, int source, CustomData *dst, int dest);
 	void (*copyFromFaceCData)(DerivedMesh *dm, int source, CustomData *dst, int dest);
-
+	
 	/* Iterate over each mapped vertex in the derived mesh, calling the
 	 * given function with the original vert and the mapped vert's new
 	 * coordinate and normal. For historical reasons the normal can be
@@ -431,6 +444,8 @@
                        void *layer);
 void DM_add_edge_layer(struct DerivedMesh *dm, int type, int alloctype,
                        void *layer);
+void DM_add_tessface_layer(struct DerivedMesh *dm, int type, int alloctype,
+                       void *layer);
 void DM_add_face_layer(struct DerivedMesh *dm, int type, int alloctype,
                        void *layer);
 
@@ -450,6 +465,7 @@
  */
 void *DM_get_vert_data_layer(struct DerivedMesh *dm, int type);
 void *DM_get_edge_data_layer(struct DerivedMesh *dm, int type);
+void *DM_get_tessface_data_layer(struct DerivedMesh *dm, int type);
 void *DM_get_face_data_layer(struct DerivedMesh *dm, int type);
 
 /* custom data setting functions

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/CCGSubSurf.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/CCGSubSurf.c	2009-08-15 16:43:03 UTC (rev 22471)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/CCGSubSurf.c	2009-08-15 17:31:28 UTC (rev 22472)
@@ -31,7 +31,7 @@
 	int numEntries, curSize, curSizeIdx;
 
 	CCGAllocatorIFC allocatorIFC;
-	CCGAllocatorHDL allocator;
+	CCAllocHDL allocator;
 } EHash;
 
 #define EHASH_alloc(eh, nb)			((eh)->allocatorIFC.alloc((eh)->allocator, nb))
@@ -39,7 +39,7 @@
 
 #define EHASH_hash(eh, item)	(((uintptr_t) (item))%((unsigned int) (eh)->curSize))
 
-static EHash *_ehash_new(int estimatedNumEntries, CCGAllocatorIFC *allocatorIFC, CCGAllocatorHDL allocator) {
+static EHash *_ehash_new(int estimatedNumEntries, CCGAllocatorIFC *allocatorIFC, CCAllocHDL allocator) {
 	EHash *eh = allocatorIFC->alloc(allocator, sizeof(*eh));
 	eh->allocatorIFC = *allocatorIFC;
 	eh->allocator = allocator;
@@ -175,13 +175,13 @@
 
 /***/
 
-static void *_stdAllocator_alloc(CCGAllocatorHDL a, int numBytes) {
+static void *_stdAllocator_alloc(CCAllocHDL a, int numBytes) {
 	return malloc(numBytes);
 }
-static void *_stdAllocator_realloc(CCGAllocatorHDL a, void *ptr, int newSize, int oldSize) {
+static void *_stdAllocator_realloc(CCAllocHDL a, void *ptr, int newSize, int oldSize) {
 	return realloc(ptr, newSize);
 }
-static void _stdAllocator_free(CCGAllocatorHDL a, void *ptr) {
+static void _stdAllocator_free(CCAllocHDL a, void *ptr) {
 	free(ptr);
 }
 
@@ -218,7 +218,7 @@
 #define NormAdd(av, bv)					{ float *_a = (float*) av, *_b = (float*) bv; _a[0]+=_b[0]; _a[1]+=_b[1]; _a[2]+=_b[2]; }
 
 
-static int _edge_isBoundary(CCGEdge *e);
+static int _edge_isBoundary(CCEdge *e);
 
 /***/
 
@@ -229,53 +229,53 @@
 } VertFlags;
 enum {
 	Edge_eEffected=		(1<<0),
-} CCGEdgeFlags;
+} CCEdgeFlags;
 enum {
 	Face_eEffected=		(1<<0),
 } FaceFlags;
 
-struct _CCGVert {
-	CCGVert		*next;	/* EHData.next */
-	CCGVertHDL	vHDL;	/* EHData.key */
+struct _CCVert {
+	CCVert		*next;	/* EHData.next */
+	CCVertHDL	vHDL;	/* EHData.key */
 
 	short numEdges, numFaces, flags, pad;
 
-	CCGEdge **edges;
-	CCGFace **faces;
+	CCEdge **edges;
+	CCFace **faces;
 //	byte *levelData;
 //	byte *userData;
 };
 #define VERT_getLevelData(v)		((byte*) &(v)[1])
 
-struct _CCGEdge {
-	CCGEdge		*next;	/* EHData.next */
-	CCGEdgeHDL	eHDL;	/* EHData.key */
+struct _CCEdge {
+	CCEdge		*next;	/* EHData.next */
+	CCEdgeHDL	eHDL;	/* EHData.key */
 
 	short numFaces, flags;
 	float crease;
 
-	CCGVert *v0,*v1;
-	CCGFace **faces;
+	CCVert *v0,*v1;
+	CCFace **faces;
 
 //	byte *levelData;
 //	byte *userData;
 };
 #define EDGE_getLevelData(e)		((byte*) &(e)[1])
 
-struct _CCGFace {
-	CCGFace		*next;	/* EHData.next */
-	CCGFaceHDL	fHDL;	/* EHData.key */
+struct _CCFace {
+	CCFace		*next;	/* EHData.next */
+	CCFaceHDL	fHDL;	/* EHData.key */
 
 	short numVerts, flags, pad1, pad2;
 
-//	CCGVert **verts;
-//	CCGEdge **edges;
+//	CCVert **verts;
+//	CCEdge **edges;
 //	byte *centerData;
 //	byte **gridData;
 //	byte *userData;
 };
-#define FACE_getVerts(f)		((CCGVert**) &(f)[1])
-#define FACE_getEdges(f)		((CCGEdge**) &(FACE_getVerts(f)[(f)->numVerts]))
+#define FACE_getVerts(f)		((CCVert**) &(f)[1])
+#define FACE_getEdges(f)		((CCEdge**) &(FACE_getVerts(f)[(f)->numVerts]))
 #define FACE_getCenterData(f)	((byte*) &(FACE_getEdges(f)[(f)->numVerts]))
 
 typedef enum {
@@ -286,15 +286,15 @@
 	eSyncState_Partial,
 } SyncState;
 
-struct _CCGSubSurf {
-	EHash *vMap;	/* map of CCGVertHDL -> Vert */
-	EHash *eMap;	/* map of CCGEdgeHDL -> Edge */
-	EHash *fMap;	/* map of CCGFaceHDL -> Face */
+struct _CSubSurf {
+	EHash *vMap;	/* map of CCVertHDL -> Vert */
+	EHash *eMap;	/* map of CCEdgeHDL -> Edge */
+	EHash *fMap;	/* map of CCFaceHDL -> Face */
 
 	CCGMeshIFC meshIFC;
 	
 	CCGAllocatorIFC allocatorIFC;
-	CCGAllocatorHDL allocator;
+	CCAllocHDL allocator;
 
 	int subdivLevels;
 	int numGrids;
@@ -320,8 +320,8 @@
 
 	EHash *oldVMap, *oldEMap, *oldFMap;
 	int lenTempArrays;
-	CCGVert **tempVerts;
-	CCGEdge **tempEdges;
+	CCVert **tempVerts;
+	CCEdge **tempEdges;
 };
 
 #define CCGSUBSURF_alloc(ss, nb)			((ss)->allocatorIFC.alloc((ss)->allocator, nb))
@@ -330,8 +330,8 @@
 
 /***/
 
-static CCGVert *_vert_new(CCGVertHDL vHDL, CCGSubSurf *ss) {
-	CCGVert *v = CCGSUBSURF_alloc(ss, sizeof(CCGVert) + ss->meshIFC.vertDataSize * (ss->subdivLevels+1) + ss->meshIFC.vertUserSize);
+static CCVert *_vert_new(CCVertHDL vHDL, CSubSurf *ss) {
+	CCVert *v = CCGSUBSURF_alloc(ss, sizeof(CCVert) + ss->meshIFC.vertDataSize * (ss->subdivLevels+1) + ss->meshIFC.vertUserSize);
 	byte *userData;
 
 	v->vHDL = vHDL;
@@ -340,13 +340,13 @@
 	v->numEdges = v->numFaces = 0;
 	v->flags = 0;
 
-	userData = ccgSubSurf_getVertUserData(ss, v);
+	userData = CCS_getVertUserData(ss, v);
 	memset(userData, 0, ss->meshIFC.vertUserSize);
 	if (ss->useAgeCounts) *((int*) &userData[ss->vertUserAgeOffset]) = ss->currentAge;
 
 	return v;
 }
-static void _vert_remEdge(CCGVert *v, CCGEdge *e) {
+static void _vert_remEdge(CCVert *v, CCEdge *e) {
 	int i;
 	for (i=0; i<v->numEdges; i++) {
 		if (v->edges[i]==e) {
@@ -355,7 +355,7 @@
 		}
 	}
 }
-static void _vert_remFace(CCGVert *v, CCGFace *f) {
+static void _vert_remFace(CCVert *v, CCFace *f) {
 	int i;
 	for (i=0; i<v->numFaces; i++) {
 		if (v->faces[i]==f) {
@@ -364,25 +364,25 @@
 		}
 	}
 }
-static void _vert_addEdge(CCGVert *v, CCGEdge *e, CCGSubSurf *ss) {
+static void _vert_addEdge(CCVert *v, CCEdge *e, CSubSurf *ss) {
 	v->edges = CCGSUBSURF_realloc(ss, v->edges, (v->numEdges+1)*sizeof(*v->edges), v->numEdges*sizeof(*v->edges));
 	v->edges[v->numEdges++] = e;
 }
-static void _vert_addFace(CCGVert *v, CCGFace *f, CCGSubSurf *ss) {
+static void _vert_addFace(CCVert *v, CCFace *f, CSubSurf *ss) {
 	v->faces = CCGSUBSURF_realloc(ss, v->faces, (v->numFaces+1)*sizeof(*v->faces), v->numFaces*sizeof(*v->faces));
 	v->faces[v->numFaces++] = f;
 }
-static CCGEdge *_vert_findEdgeTo(CCGVert *v, CCGVert *vQ) {
+static CCEdge *_vert_findEdgeTo(CCVert *v, CCVert *vQ) {
 	int i;
 	for (i=0; i<v->numEdges; i++) {
-		CCGEdge *e = v->edges[v->numEdges-1-i]; // XXX, note reverse
+		CCEdge *e = v->edges[v->numEdges-1-i]; // XXX, note reverse
 		if (	(e->v0==v && e->v1==vQ) ||
 				(e->v1==v && e->v0==vQ))
 			return e;
 	}
 	return 0;
 }
-static int _vert_isBoundary(CCGVert *v) {
+static int _vert_isBoundary(CCVert *v) {
 	int i;
 	for (i=0; i<v->numEdges; i++)
 		if (_edge_isBoundary(v->edges[i]))
@@ -390,27 +390,27 @@
 	return 0;
 }
 
-static void *_vert_getCo(CCGVert *v, int lvl, int dataSize) {
+static void *_vert_getCo(CCVert *v, int lvl, int dataSize) {
 	return &VERT_getLevelData(v)[lvl*dataSize];
 }
-static float *_vert_getNo(CCGVert *v, int lvl, int dataSize, int normalDataOffset) {
+static float *_vert_getNo(CCVert *v, int lvl, int dataSize, int normalDataOffset) {
 	return (float*) &VERT_getLevelData(v)[lvl*dataSize + normalDataOffset];
 }
 
-static void _vert_free(CCGVert *v, CCGSubSurf *ss) {
+static void _vert_free(CCVert *v, CSubSurf *ss) {
 	CCGSUBSURF_free(ss, v->edges);
 	CCGSUBSURF_free(ss, v->faces);
 	CCGSUBSURF_free(ss, v);
 }
 
-static int VERT_seam(CCGVert *v) {
+static int VERT_seam(CCVert *v) {
 	return ((v->flags & Vert_eSeam) != 0);
 }
 
 /***/
 
-static CCGEdge *_edge_new(CCGEdgeHDL eHDL, CCGVert *v0, CCGVert *v1, float crease, CCGSubSurf *ss) {
-	CCGEdge *e = CCGSUBSURF_alloc(ss, sizeof(CCGEdge) + ss->meshIFC.vertDataSize *((ss->subdivLevels+1) + (1<<(ss->subdivLevels+1))-1) + ss->meshIFC.edgeUserSize);
+static CCEdge *_edge_new(CCEdgeHDL eHDL, CCVert *v0, CCVert *v1, float crease, CSubSurf *ss) {
+	CCEdge *e = CCGSUBSURF_alloc(ss, sizeof(CCEdge) + ss->meshIFC.vertDataSize *((ss->subdivLevels+1) + (1<<(ss->subdivLevels+1))-1) + ss->meshIFC.edgeUserSize);
 	byte *userData;
 
 	e->eHDL = eHDL;
@@ -423,13 +423,13 @@
 	_vert_addEdge(v0, e, ss);
 	_vert_addEdge(v1, e, ss);
 
-	userData = ccgSubSurf_getEdgeUserData(ss, e);
+	userData = CCS_getEdgeUserData(ss, e);
 	memset(userData, 0, ss->meshIFC.edgeUserSize);
 	if (ss->useAgeCounts) *((int*) &userData[ss->edgeUserAgeOffset]) = ss->currentAge;
 
 	return e;
 }
-static void _edge_remFace(CCGEdge *e, CCGFace *f) {

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list