[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