[Bf-committers] [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

Nicholas Bishop nicholasbishop at gmail.com
Sat Dec 24 02:08:03 CET 2011


Should that be uint64_t rather than u_int64_t? The former is standard
C99, the latter is an older non-standard-but-common define. Bjornmose
also reported on IRC it didn't compile under Windows. (IIRC Windows
needs an extra define anyways though, since it doesn't have a correct
C99 stdint.h.)

Thanks,
-Nicholas

On Fri, Dec 23, 2011 at 3:30 PM, Campbell Barton <ideasman42 at gmail.com> wrote:
> 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. @@
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs


More information about the Bf-committers mailing list