diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-06-22 01:44:26 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-06-22 01:44:26 +0300 |
commit | 63006c88a1527c9199b9db0f6f22309781eaa4c3 (patch) | |
tree | 653e7d4ab8f8785b51368214394dca3b0ae34859 | |
parent | 6fbe6eb033699a1fd5d3f3e5159d464ab0f97284 (diff) |
writefile: use const for old address
Also remove temp preview overwriting.
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 2 | ||||
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 65 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_sdna_types.h | 2 |
3 files changed, 34 insertions, 35 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 5c7b664e547..689a975e19f 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -8519,7 +8519,7 @@ BlendFileData *blo_read_file_internal(FileData *fd, const char *filepath) struct BHeadSort { BHead *bhead; - void *old; + const void *old; }; static int verg_bheadsort(const void *v1, const void *v2) diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 327b7b5aed4..b5a2115fa5f 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -449,7 +449,9 @@ static int endwrite(WriteData *wd) /* ********** WRITE FILE ****************** */ -static void writestruct_at_address(WriteData *wd, int filecode, const char *structname, int nr, void *adr, void *data) +static void writestruct_at_address( + WriteData *wd, int filecode, const char *structname, int nr, + const void *adr, const void *data) { BHead bh; const short *sp; @@ -476,7 +478,9 @@ static void writestruct_at_address(WriteData *wd, int filecode, const char *stru mywrite(wd, data, bh.len); } -static void writestruct(WriteData *wd, int filecode, const char *structname, int nr, void *adr) +static void writestruct( + WriteData *wd, int filecode, const char *structname, int nr, + const void *adr) { writestruct_at_address(wd, filecode, structname, nr, adr, adr); } @@ -493,7 +497,7 @@ static void writedata(WriteData *wd, int filecode, int len, const void *adr) /* /* init BHead */ bh.code = filecode; - bh.old = (void *)adr; /* this is safe to cast from const */ + bh.old = adr; bh.nr = 1; bh.SDNAnr = 0; bh.len = len; @@ -503,9 +507,9 @@ static void writedata(WriteData *wd, int filecode, int len, const void *adr) /* } /* use this to force writing of lists in same order as reading (using link_list) */ -static void writelist(WriteData *wd, int filecode, const char *structname, ListBase *lb) +static void writelist(WriteData *wd, int filecode, const char *structname, const ListBase *lb) { - Link *link = lb->first; + const Link *link = lb->first; while (link) { writestruct(wd, filecode, structname, 1, link); @@ -515,10 +519,10 @@ static void writelist(WriteData *wd, int filecode, const char *structname, ListB /* *************** writing some direct data structs used in more code parts **************** */ /*These functions are used by blender's .blend system for file saving/loading.*/ -void IDP_WriteProperty_OnlyData(IDProperty *prop, void *wd); -void IDP_WriteProperty(IDProperty *prop, void *wd); +void IDP_WriteProperty_OnlyData(const IDProperty *prop, void *wd); +void IDP_WriteProperty(const IDProperty *prop, void *wd); -static void IDP_WriteArray(IDProperty *prop, void *wd) +static void IDP_WriteArray(const IDProperty *prop, void *wd) { /*REMEMBER to set totalen to len in the linking code!!*/ if (prop->data.pointer) { @@ -534,11 +538,11 @@ static void IDP_WriteArray(IDProperty *prop, void *wd) } } -static void IDP_WriteIDPArray(IDProperty *prop, void *wd) +static void IDP_WriteIDPArray(const IDProperty *prop, void *wd) { /*REMEMBER to set totalen to len in the linking code!!*/ if (prop->data.pointer) { - IDProperty *array = prop->data.pointer; + const IDProperty *array = prop->data.pointer; int a; writestruct(wd, DATA, "IDProperty", prop->len, array); @@ -548,13 +552,13 @@ static void IDP_WriteIDPArray(IDProperty *prop, void *wd) } } -static void IDP_WriteString(IDProperty *prop, void *wd) +static void IDP_WriteString(const IDProperty *prop, void *wd) { /*REMEMBER to set totalen to len in the linking code!!*/ writedata(wd, DATA, prop->len, prop->data.pointer); } -static void IDP_WriteGroup(IDProperty *prop, void *wd) +static void IDP_WriteGroup(const IDProperty *prop, void *wd) { IDProperty *loop; @@ -564,7 +568,7 @@ static void IDP_WriteGroup(IDProperty *prop, void *wd) } /* Functions to read/write ID Properties */ -void IDP_WriteProperty_OnlyData(IDProperty *prop, void *wd) +void IDP_WriteProperty_OnlyData(const IDProperty *prop, void *wd) { switch (prop->type) { case IDP_GROUP: @@ -582,13 +586,13 @@ void IDP_WriteProperty_OnlyData(IDProperty *prop, void *wd) } } -void IDP_WriteProperty(IDProperty *prop, void *wd) +void IDP_WriteProperty(const IDProperty *prop, void *wd) { writestruct(wd, DATA, "IDProperty", 1, prop); IDP_WriteProperty_OnlyData(prop, wd); } -static void write_iddata(void *wd, ID *id) +static void write_iddata(void *wd, const ID *id) { /* ID_WM's id->properties are considered runtime only, and never written in .blend file. */ if (id->properties && !ELEM(GS(id->name), ID_WM)) { @@ -596,29 +600,24 @@ static void write_iddata(void *wd, ID *id) } } -static void write_previews(WriteData *wd, PreviewImage *prv) +static void write_previews(WriteData *wd, const PreviewImage *prv_orig) { /* Never write previews when doing memsave (i.e. undo/redo)! */ - if (prv && !wd->current) { - short w = prv->w[1]; - short h = prv->h[1]; - unsigned int *rect = prv->rect[1]; + if (prv_orig && !wd->current) { + PreviewImage prv = *prv_orig; /* don't write out large previews if not requested */ if (!(U.flag & USER_SAVE_PREVIEWS)) { - prv->w[1] = 0; - prv->h[1] = 0; - prv->rect[1] = NULL; - } - writestruct(wd, DATA, "PreviewImage", 1, prv); - if (prv->rect[0]) writedata(wd, DATA, prv->w[0] * prv->h[0] * sizeof(unsigned int), prv->rect[0]); - if (prv->rect[1]) writedata(wd, DATA, prv->w[1] * prv->h[1] * sizeof(unsigned int), prv->rect[1]); - - /* restore preview, we still want to keep it in memory even if not saved to file */ - if (!(U.flag & USER_SAVE_PREVIEWS) ) { - prv->w[1] = w; - prv->h[1] = h; - prv->rect[1] = rect; + prv.w[1] = 0; + prv.h[1] = 0; + prv.rect[1] = NULL; + } + writestruct_at_address(wd, DATA, "PreviewImage", 1, prv_orig, &prv); + if (prv.rect[0]) { + writedata(wd, DATA, prv.w[0] * prv.h[0] * sizeof(unsigned int), prv.rect[0]); + } + if (prv.rect[1]) { + writedata(wd, DATA, prv.w[1] * prv.h[1] * sizeof(unsigned int), prv.rect[1]); } } } diff --git a/source/blender/makesdna/DNA_sdna_types.h b/source/blender/makesdna/DNA_sdna_types.h index 28204ebeb88..cb7a371c7c5 100644 --- a/source/blender/makesdna/DNA_sdna_types.h +++ b/source/blender/makesdna/DNA_sdna_types.h @@ -67,7 +67,7 @@ typedef struct SDNA { # typedef struct BHead { int code, len; - void *old; + const void *old; int SDNAnr, nr; } BHead; # |