[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42849] trunk/blender/source/blender: change customdata mask from an 'unsigned int' to an 'u_int64_t', since BMesh branch has run out of bits

Campbell Barton ideasman42 at gmail.com
Fri Dec 23 21:30:23 CET 2011


Revision: 42849
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42849
Author:   campbellbarton
Date:     2011-12-23 20:30:23 +0000 (Fri, 23 Dec 2011)
Log Message:
-----------
change customdata mask from an 'unsigned int' to an 'u_int64_t', since BMesh branch has run out of bits

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_customdata.h
    trunk/blender/source/blender/blenkernel/depsgraph_private.h
    trunk/blender/source/blender/blenkernel/intern/customdata.c
    trunk/blender/source/blender/blenkernel/intern/mesh_validate.c
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/editors/include/ED_view3d.h
    trunk/blender/source/blender/makesdna/DNA_defs.h
    trunk/blender/source/blender/makesdna/DNA_genfile.h
    trunk/blender/source/blender/makesdna/DNA_object_types.h
    trunk/blender/source/blender/makesdna/DNA_scene_types.h
    trunk/blender/source/blender/makesdna/intern/dna_genfile.c
    trunk/blender/source/blender/makesdna/intern/makesdna.c
    trunk/blender/source/blender/modifiers/intern/MOD_multires.c
    trunk/blender/source/blender/modifiers/intern/MOD_shrinkwrap.c
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/blenkernel/BKE_customdata.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_customdata.h	2011-12-23 20:26:37 UTC (rev 42848)
+++ trunk/blender/source/blender/blenkernel/BKE_customdata.h	2011-12-23 20:30:23 UTC (rev 42849)
@@ -41,7 +41,7 @@
 struct ID;
 struct CustomData;
 struct CustomDataLayer;
-typedef unsigned int CustomDataMask;
+typedef u_int64_t CustomDataMask;
 
 extern const CustomDataMask CD_MASK_BAREMESH;
 extern const CustomDataMask CD_MASK_MESH;
@@ -65,6 +65,8 @@
 #define CD_DUPLICATE 4  /* do a full copy of all layers, only allowed if source
 						   has same number of elements */
 
+#define CD_TYPE_AS_MASK(_type) (CustomDataMask)(1 << (CustomDataMask)(_type))
+
 /* initialises a CustomData object with the same layer setup as source.
  * mask is a bitfield where (mask & (1 << (layer type))) indicates
  * if a layer should be copied or not. alloctype must be one of the above. */

Modified: trunk/blender/source/blender/blenkernel/depsgraph_private.h
===================================================================
--- trunk/blender/source/blender/blenkernel/depsgraph_private.h	2011-12-23 20:26:37 UTC (rev 42848)
+++ trunk/blender/source/blender/blenkernel/depsgraph_private.h	2011-12-23 20:30:23 UTC (rev 42849)
@@ -69,7 +69,7 @@
 	int ancestor_count;
 	unsigned int lay;				// accumulated layers of its relations + itself
 	unsigned int scelay;			// layers due to being in scene
-	unsigned int customdata_mask;	// customdata mask
+	u_int64_t customdata_mask;	// customdata mask
 	int lasttime;		// if lasttime != DagForest->time, this node was not evaluated yet for flushing
 	int BFS_dist;		// BFS distance
 	int DFS_dist;		// DFS distance

Modified: trunk/blender/source/blender/blenkernel/intern/customdata.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/customdata.c	2011-12-23 20:26:37 UTC (rev 42848)
+++ trunk/blender/source/blender/blenkernel/intern/customdata.c	2011-12-23 20:30:23 UTC (rev 42849)
@@ -943,7 +943,7 @@
 			number++;
 
 		if(lastflag & CD_FLAG_NOCOPY) continue;
-		else if(!((int)mask & (int)(1 << (int)type))) continue;
+		else if(!(mask & CD_TYPE_AS_MASK(type))) continue;
 		else if(number < CustomData_number_of_layers(dest, type)) continue;
 
 		if((alloctype == CD_ASSIGN) && (lastflag & CD_FLAG_NOFREE))
@@ -1500,7 +1500,7 @@
 	int i;
 
 	for(i = 0; i < data->totlayer; ++i)
-		if(!((int)mask & (int)(1 << (int)data->layers[i].type)))
+		if(!(mask & CD_TYPE_AS_MASK(data->layers[i].type)))
 			data->layers[i].flag |= CD_FLAG_NOCOPY;
 }
 
@@ -2441,7 +2441,7 @@
 		layer = &data->layers[i];
 		typeInfo = layerType_getInfo(layer->type);
 
-		if(!(mask & (1<<layer->type)));
+		if(!(mask & CD_TYPE_AS_MASK(layer->type)));
 		else if((layer->flag & CD_FLAG_EXTERNAL) && (layer->flag & CD_FLAG_IN_MEMORY)) {
 			if(typeInfo->free)
 				typeInfo->free(layer->data, totelem, typeInfo->size);
@@ -2467,7 +2467,7 @@
 		layer = &data->layers[i];
 		typeInfo = layerType_getInfo(layer->type);
 
-		if(!(mask & (1<<layer->type)));
+		if(!(mask & CD_TYPE_AS_MASK(layer->type)));
 		else if(layer->flag & CD_FLAG_IN_MEMORY);
 		else if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->read)
 			update= 1;
@@ -2488,7 +2488,7 @@
 		layer = &data->layers[i];
 		typeInfo = layerType_getInfo(layer->type);
 
-		if(!(mask & (1<<layer->type)));
+		if(!(mask & CD_TYPE_AS_MASK(layer->type)));
 		else if(layer->flag & CD_FLAG_IN_MEMORY);
 		else if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->read) {
 			blay= cdf_layer_find(cdf, layer->type, layer->name);
@@ -2527,7 +2527,7 @@
 		layer = &data->layers[i];
 		typeInfo = layerType_getInfo(layer->type);
 
-		if(!(mask & (1<<layer->type)));
+		if(!(mask & CD_TYPE_AS_MASK(layer->type)));
 		else if((layer->flag & CD_FLAG_EXTERNAL) && typeInfo->write)
 			update= 1;
 	}
@@ -2641,7 +2641,7 @@
 
 	if(layer->flag & CD_FLAG_EXTERNAL) {
 		if(!(layer->flag & CD_FLAG_IN_MEMORY))
-			CustomData_external_read(data, id, (1<<layer->type), totelem);
+			CustomData_external_read(data, id, CD_TYPE_AS_MASK(layer->type), totelem);
 
 		layer->flag &= ~CD_FLAG_EXTERNAL;
 

Modified: trunk/blender/source/blender/blenkernel/intern/mesh_validate.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh_validate.c	2011-12-23 20:26:37 UTC (rev 42848)
+++ trunk/blender/source/blender/blenkernel/intern/mesh_validate.c	2011-12-23 20:30:23 UTC (rev 42849)
@@ -395,7 +395,7 @@
 
 	while(i<data->totlayer) {
 		CustomDataLayer *layer= &data->layers[i];
-		int mask= 1 << layer->type;
+		CustomDataMask mask= CD_TYPE_AS_MASK(layer->type);
 		int ok= 1;
 
 		if((mask&CD_MASK_MESH)==0) {

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2011-12-23 20:26:37 UTC (rev 42848)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2011-12-23 20:30:23 UTC (rev 42849)
@@ -2563,7 +2563,7 @@
 
 #else				/* ensure CD_MASK_BAREMESH for now */
 					EditMesh *em = (ob == scene->obedit)? BKE_mesh_get_editmesh(ob->data): NULL;
-					unsigned int data_mask= scene->customdata_mask | ob->customdata_mask | CD_MASK_BAREMESH;
+					u_int64_t data_mask= scene->customdata_mask | ob->customdata_mask | CD_MASK_BAREMESH;
 					if(em) {
 						makeDerivedMesh(scene, ob, em,  data_mask); /* was CD_MASK_BAREMESH */
 						BKE_mesh_end_editmesh(ob->data, em);

Modified: trunk/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_view3d.h	2011-12-23 20:26:37 UTC (rev 42848)
+++ trunk/blender/source/blender/editors/include/ED_view3d.h	2011-12-23 20:30:23 UTC (rev 42849)
@@ -286,8 +286,8 @@
 void ED_view3d_quadview_update(struct ScrArea *sa, struct ARegion *ar, short do_clip);
 int ED_view3d_lock(struct RegionView3D *rv3d);
 
-unsigned int ED_view3d_datamask(struct Scene *scene, struct View3D *v3d);
-unsigned int ED_viewedit_datamask(struct bScreen *screen);
+u_int64_t ED_view3d_datamask(struct Scene *scene, struct View3D *v3d);
+u_int64_t ED_viewedit_datamask(struct bScreen *screen);
 
 /* camera lock functions */
 int ED_view3d_camera_lock_check(struct View3D *v3d, struct RegionView3D *rv3d);

Modified: trunk/blender/source/blender/makesdna/DNA_defs.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_defs.h	2011-12-23 20:26:37 UTC (rev 42848)
+++ trunk/blender/source/blender/makesdna/DNA_defs.h	2011-12-23 20:30:23 UTC (rev 42849)
@@ -42,4 +42,7 @@
 #  endif
 #endif
 
+/* hrmf, we need a better include then this */
+#include "../blenloader/BLO_sys_types.h" /* needed for int64_t only! */
+
 #endif /* DNA_DEFS_H */

Modified: trunk/blender/source/blender/makesdna/DNA_genfile.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_genfile.h	2011-12-23 20:26:37 UTC (rev 42848)
+++ trunk/blender/source/blender/makesdna/DNA_genfile.h	2011-12-23 20:30:23 UTC (rev 42849)
@@ -48,12 +48,13 @@
 	SDNA_TYPE_ULONG    = 6,
 	SDNA_TYPE_FLOAT    = 7,
 	SDNA_TYPE_DOUBLE   = 8,
-	SDNA_TYPE_INT64    = 9
-	/* ,SDNA_TYPE_VOID     = 10 */ /* nothing uses yet */
+	SDNA_TYPE_INT64    = 9,
+	SDNA_TYPE_UINT64   = 10
+	/* ,SDNA_TYPE_VOID     = 11 */ /* nothing uses yet */
 } eSDNA_Type;
 
 /* define so switch statements don't complain */
-#define SDNA_TYPE_VOID 10
+#define SDNA_TYPE_VOID 11
 
 struct SDNA *DNA_sdna_from_data(void *data, int datalen, int do_endian_swap);
 void DNA_sdna_free(struct SDNA *sdna);

Modified: trunk/blender/source/blender/makesdna/DNA_object_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_object_types.h	2011-12-23 20:26:37 UTC (rev 42848)
+++ trunk/blender/source/blender/makesdna/DNA_object_types.h	2011-12-23 20:30:23 UTC (rev 42849)
@@ -250,8 +250,8 @@
 	struct FluidsimSettings *fluidsimSettings; /* if fluidsim enabled, store additional settings */
 
 	struct DerivedMesh *derivedDeform, *derivedFinal;
-	unsigned int lastDataMask;   /* the custom data layer mask that was last used to calculate derivedDeform and derivedFinal */
-	unsigned int customdata_mask; /* (extra) custom data layer mask to use for creating derivedmesh, set by depsgraph */
+	u_int64_t lastDataMask;   /* the custom data layer mask that was last used to calculate derivedDeform and derivedFinal */
+	u_int64_t customdata_mask; /* (extra) custom data layer mask to use for creating derivedmesh, set by depsgraph */
 	unsigned int state;			/* bit masks of game controllers that are active */
 	unsigned int init_state;	/* bit masks of initial state as recorded by the users */
 

Modified: trunk/blender/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_scene_types.h	2011-12-23 20:26:37 UTC (rev 42848)
+++ trunk/blender/source/blender/makesdna/DNA_scene_types.h	2011-12-23 20:30:23 UTC (rev 42849)
@@ -915,8 +915,6 @@
 	unsigned int lay;			/* bitflags for layer visibility */
 	int layact;		/* active layer */
 	unsigned int lay_updated;       /* runtime flag, has layer ever been updated since load? */
-	unsigned int customdata_mask;	/* XXX. runtime flag for drawing, actually belongs in the window, only used by object_handle_update() */
-	unsigned int customdata_mask_modal; /* XXX. same as above but for temp operator use (gl renders) */
 	
 	short flag;								/* various settings */
 	
@@ -971,6 +969,9 @@
 
 	/* Movie Tracking */
 	struct MovieClip *clip;			/* active movie clip */
+
+	u_int64_t customdata_mask;	/* XXX. runtime flag for drawing, actually belongs in the window, only used by object_handle_update() */
+	u_int64_t customdata_mask_modal; /* XXX. same as above but for temp operator use (gl renders) */
 } Scene;
 
 

Modified: trunk/blender/source/blender/makesdna/intern/dna_genfile.c
===================================================================
--- trunk/blender/source/blender/makesdna/intern/dna_genfile.c	2011-12-23 20:26:37 UTC (rev 42848)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list