[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52269] trunk/blender/source/blender/bmesh /operators/bmo_bevel.c: bevel: save some memory by aligning struct members.

Campbell Barton ideasman42 at gmail.com
Fri Nov 16 11:15:31 CET 2012


Revision: 52269
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52269
Author:   campbellbarton
Date:     2012-11-16 10:15:25 +0000 (Fri, 16 Nov 2012)
Log Message:
-----------
bevel: save some memory by aligning struct members.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_bevel.c

Modified: trunk/blender/source/blender/bmesh/operators/bmo_bevel.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_bevel.c	2012-11-16 08:12:06 UTC (rev 52268)
+++ trunk/blender/source/blender/bmesh/operators/bmo_bevel.c	2012-11-16 10:15:25 UTC (rev 52269)
@@ -37,17 +37,21 @@
 #include "intern/bmesh_operators_private.h" /* own include */
 
 /* experemental - Campbell */
-// #define USE_ALTERNATE_ADJ
+//#define USE_ALTERNATE_ADJ
 
 #define BEVEL_FLAG      1
 #define EDGE_SELECTED   2
 
 #define BEVEL_EPSILON  1e-6
 
+/* for testing */
+// #pragma GCC diagnostic error "-Wpadded"
+
 /* Constructed vertex, sometimes later instantiated as BMVert */
 typedef struct NewVert {
 	BMVert *v;
 	float co[3];
+	int _pad;
 } NewVert;
 
 struct BoundVert;
@@ -56,28 +60,34 @@
 typedef struct EdgeHalf {
 	struct EdgeHalf *next, *prev;   /* in CCW order */
 	BMEdge *e;                  /* original mesh edge */
-	int isbev;                  /* is this edge beveled? */
-	int isrev;                  /* is e->v2 the vertex at this end? */
-	int seg;                    /* how many segments for the bevel */
-	float offset;               /* offset for this edge */
 	BMFace *fprev;              /* face between this edge and previous, if any */
 	BMFace *fnext;              /* face between this edge and next, if any */
 	struct BoundVert *leftv;    /* left boundary vert (looking along edge to end) */
 	struct BoundVert *rightv;   /* right boundary vert, if beveled */
+	short isbev;                /* is this edge beveled? */
+	short isrev;                /* is e->v2 the vertex at this end? */
+	int   seg;                  /* how many segments for the bevel */
+	float offset;               /* offset for this edge */
+//	int _pad;
 } EdgeHalf;
 
 /* An element in a cyclic boundary of a Vertex Mesh (VMesh) */
 typedef struct BoundVert {
 	struct BoundVert *next, *prev;  /* in CCW order */
-	int index;          /* used for vmesh indexing */
 	NewVert nv;
 	EdgeHalf *efirst;   /* first of edges attached here: in CCW order */
 	EdgeHalf *elast;
 	EdgeHalf *ebev;     /* beveled edge whose left side is attached here, if any */
+	int index;          /* used for vmesh indexing */
+//	int _pad;
 } BoundVert;
 
 /* Mesh structure replacing a vertex */
 typedef struct VMesh {
+	NewVert *mesh;           /* allocated array - size and structure depends on kind */
+	BoundVert *boundstart;   /* start of boundary double-linked list */
+	int count;               /* number of vertices in the boundary */
+	int seg;                 /* common # of segments for segmented edges */
 	enum {
 		M_NONE,         /* no polygon mesh needed */
 		M_POLY,         /* a simple polygon */
@@ -86,10 +96,7 @@
 		M_TRI_FAN,      /* a simple polygon - fan filled */
 		M_QUAD_STRIP,   /* a simple polygon - cut into paralelle strips */
 	} mesh_kind;
-	int count;          /* number of vertices in the boundary */
-	int seg;            /* common # of segments for segmented edges */
-	BoundVert *boundstart;      /* start of boundary double-linked list */
-	NewVert *mesh;          /* allocated array - size and structure depends on kind */
+//	int _pad;
 } VMesh;
 
 /* Data for a vertex involved in a bevel */
@@ -101,9 +108,7 @@
 	VMesh *vmesh;           /* mesh structure for replacing vertex */
 } BevVert;
 
-/*
- * Bevel parameters and state
- */
+/* Bevel parameters and state */
 typedef struct BevelParams {
 	/* hash of BevVert for each vertex involved in bevel
 	 * GHash: (key=(BMVert *), value=(BevVert *)) */
@@ -114,6 +119,8 @@
 	int seg;                /* number of segments in beveled edge profile */
 } BevelParams;
 
+// #pragma GCC diagnostic ignored "-Wpadded"
+
 //#include "bevdebug.c"
 
 /* Make a new BoundVert of the given kind, insert it at the end of the circular linked




More information about the Bf-blender-cvs mailing list