diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2015-12-27 13:53:50 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2015-12-27 14:00:33 +0300 |
commit | 3fcf535d2e003ad939fa1f1c7aa4d5da1b38aef7 (patch) | |
tree | 0cc5b044cdc1f7b6fa58ad1d0c3c6cafc51a7759 /source/blender/render | |
parent | ec2ca11cba496294838bfb5fb76f7bfcef2fe8cc (diff) |
Split id->flag in two, persistent flags and runtime tags.
This is purely internal sanitizing/cleanup, no change in behavior is expected at all.
This change was also needed because we were getting short on ID flags, and
future enhancement of 'user_one' ID behavior requires two new ones.
id->flag remains for persistent data (fakeuser only, so far!), this also allows us
100% backward & forward compatibility.
New id->tag is used for most flags. Though written in .blend files, its content
is cleared at read time.
Note that .blend file version was bumped, so that we can clear runtimeflags from
old .blends, important in case we add new persistent flags in future.
Also, behavior of tags (either status ones, or whether they need to be cleared before/after use)
has been added as comments to their declaration.
Reviewers: sergey, campbellbarton
Differential Revision: https://developer.blender.org/D1683
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/bake.c | 12 | ||||
-rw-r--r-- | source/blender/render/intern/source/convertblender.c | 6 | ||||
-rw-r--r-- | source/blender/render/intern/source/multires_bake.c | 10 | ||||
-rw-r--r-- | source/blender/render/intern/source/pipeline.c | 26 |
4 files changed, 27 insertions, 27 deletions
diff --git a/source/blender/render/intern/source/bake.c b/source/blender/render/intern/source/bake.c index 30036c27b5d..da553402ea3 100644 --- a/source/blender/render/intern/source/bake.c +++ b/source/blender/render/intern/source/bake.c @@ -656,7 +656,7 @@ static int get_next_bake_face(BakeShade *bs) bs->mloop = me->mloop + bs->mpoly->loopstart; /* Tag mesh for reevaluation. */ - me->id.flag |= LIB_DOIT; + me->id.tag |= LIB_TAG_DOIT; } else { Image *ima = NULL; @@ -690,14 +690,14 @@ static int get_next_bake_face(BakeShade *bs) } if (ima->flag & IMA_USED_FOR_RENDER) { - ima->id.flag &= ~LIB_DOIT; + ima->id.tag &= ~LIB_TAG_DOIT; BKE_image_release_ibuf(ima, ibuf, NULL); continue; } /* find the image for the first time? */ - if (ima->id.flag & LIB_DOIT) { - ima->id.flag &= ~LIB_DOIT; + if (ima->id.tag & LIB_TAG_DOIT) { + ima->id.tag &= ~LIB_TAG_DOIT; /* we either fill in float or char, this ensures things go fine */ if (ibuf->rect_float) @@ -1026,7 +1026,7 @@ int RE_bake_shade_all_selected(Render *re, int type, Object *actob, short *do_up if ((R.r.bake_flag & R_BAKE_VCOL) == 0) { for (ima = G.main->image.first; ima; ima = ima->id.next) { ImBuf *ibuf = BKE_image_acquire_ibuf(ima, NULL, NULL); - ima->id.flag |= LIB_DOIT; + ima->id.tag |= LIB_TAG_DOIT; ima->flag &= ~IMA_USED_FOR_RENDER; if (ibuf) { ibuf->userdata = NULL; /* use for masking if needed */ @@ -1110,7 +1110,7 @@ int RE_bake_shade_all_selected(Render *re, int type, Object *actob, short *do_up } for (ima = G.main->image.first; ima; ima = ima->id.next) { - if ((ima->id.flag & LIB_DOIT) == 0) { + if ((ima->id.tag & LIB_TAG_DOIT) == 0) { ImBuf *ibuf = BKE_image_acquire_ibuf(ima, NULL, NULL); BakeImBufuserData *userdata; diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 846255b935f..820e129b0ce 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -3956,7 +3956,7 @@ static void add_lightgroup(Render *re, Group *group, int exclusive) { GroupObject *go, *gol; - group->id.flag &= ~LIB_DOIT; + group->id.tag &= ~LIB_TAG_DOIT; /* it's a bit too many loops in loops... but will survive */ /* note that 'exclusive' will remove it from the global list */ @@ -3995,12 +3995,12 @@ static void set_material_lightgroups(Render *re) return; for (group= re->main->group.first; group; group=group->id.next) - group->id.flag |= LIB_DOIT; + group->id.tag |= LIB_TAG_DOIT; /* it's a bit too many loops in loops... but will survive */ /* hola! materials not in use...? */ for (ma= re->main->mat.first; ma; ma=ma->id.next) { - if (ma->group && (ma->group->id.flag & LIB_DOIT)) + if (ma->group && (ma->group->id.tag & LIB_TAG_DOIT)) add_lightgroup(re, ma->group, ma->mode & MA_GROUP_NOLAY); } } diff --git a/source/blender/render/intern/source/multires_bake.c b/source/blender/render/intern/source/multires_bake.c index dcc33b99742..8eb6e7000ab 100644 --- a/source/blender/render/intern/source/multires_bake.c +++ b/source/blender/render/intern/source/multires_bake.c @@ -1189,20 +1189,20 @@ static void count_images(MultiresBakeRender *bkr) totpoly = dm->getNumPolys(dm); for (a = 0; a < totpoly; a++) - mtexpoly[a].tpage->id.flag &= ~LIB_DOIT; + mtexpoly[a].tpage->id.tag &= ~LIB_TAG_DOIT; for (a = 0; a < totpoly; a++) { Image *ima = mtexpoly[a].tpage; - if ((ima->id.flag & LIB_DOIT) == 0) { + if ((ima->id.tag & LIB_TAG_DOIT) == 0) { LinkData *data = BLI_genericNodeN(ima); BLI_addtail(&bkr->image, data); bkr->tot_image++; - ima->id.flag |= LIB_DOIT; + ima->id.tag |= LIB_TAG_DOIT; } } for (a = 0; a < totpoly; a++) - mtexpoly[a].tpage->id.flag &= ~LIB_DOIT; + mtexpoly[a].tpage->id.tag &= ~LIB_TAG_DOIT; } static void bake_images(MultiresBakeRender *bkr, MultiresBakeResult *result) @@ -1234,7 +1234,7 @@ static void bake_images(MultiresBakeRender *bkr, MultiresBakeResult *result) BKE_image_release_ibuf(ima, ibuf, NULL); - ima->id.flag |= LIB_DOIT; + ima->id.tag |= LIB_TAG_DOIT; } } diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c index 64866509a0c..1ac9dd8e716 100644 --- a/source/blender/render/intern/source/pipeline.c +++ b/source/blender/render/intern/source/pipeline.c @@ -2013,7 +2013,7 @@ static void tag_scenes_for_render(Render *re) #endif for (sce = re->main->scene.first; sce; sce = sce->id.next) { - sce->id.flag &= ~LIB_DOIT; + sce->id.tag &= ~LIB_TAG_DOIT; #ifdef DEPSGRAPH_WORKAROUND_HACK tag_dependend_objects_for_render(sce, renderlay); #endif @@ -2022,7 +2022,7 @@ static void tag_scenes_for_render(Render *re) #ifdef WITH_FREESTYLE if (re->freestyle_bmain) { for (sce = re->freestyle_bmain->scene.first; sce; sce = sce->id.next) { - sce->id.flag &= ~LIB_DOIT; + sce->id.tag &= ~LIB_TAG_DOIT; #ifdef DEPSGRAPH_WORKAROUND_HACK tag_dependend_objects_for_render(sce, renderlay); #endif @@ -2031,7 +2031,7 @@ static void tag_scenes_for_render(Render *re) #endif if (RE_GetCamera(re) && composite_needs_render(re->scene, 1)) { - re->scene->id.flag |= LIB_DOIT; + re->scene->id.tag |= LIB_TAG_DOIT; #ifdef DEPSGRAPH_WORKAROUND_HACK tag_dependend_objects_for_render(re->scene, renderlay); #endif @@ -2039,7 +2039,7 @@ static void tag_scenes_for_render(Render *re) if (re->scene->nodetree == NULL) return; - /* check for render-layers nodes using other scenes, we tag them LIB_DOIT */ + /* check for render-layers nodes using other scenes, we tag them LIB_TAG_DOIT */ for (node = re->scene->nodetree->nodes.first; node; node = node->next) { node->flag &= ~NODE_TEST; if (node->type == CMP_NODE_R_LAYERS && (node->flag & NODE_MUTED) == 0) { @@ -2060,11 +2060,11 @@ static void tag_scenes_for_render(Render *re) } if (node->id != (ID *)re->scene) { - if ((node->id->flag & LIB_DOIT) == 0) { + if ((node->id->tag & LIB_TAG_DOIT) == 0) { Scene *scene = (Scene *) node->id; if (render_scene_has_layers_to_render(scene)) { node->flag |= NODE_TEST; - node->id->flag |= LIB_DOIT; + node->id->tag |= LIB_TAG_DOIT; #ifdef DEPSGRAPH_WORKAROUND_HACK tag_dependend_objects_for_render(scene, renderlay); #endif @@ -2283,7 +2283,7 @@ static void do_merge_fullsample(Render *re, bNodeTree *ntree) tag_scenes_for_render(re); for (sce = re->main->scene.first; sce; sce = sce->id.next) { - if (sce->id.flag & LIB_DOIT) { + if (sce->id.tag & LIB_TAG_DOIT) { re1 = RE_GetRender(sce->id.name); if (re1 && (re1->r.scemode & R_FULL_SAMPLE)) { @@ -2408,12 +2408,12 @@ void RE_MergeFullSample(Render *re, Main *bmain, Scene *sce, bNodeTree *ntree) /* tag scenes unread */ for (scene = re->main->scene.first; scene; scene = scene->id.next) - scene->id.flag |= LIB_DOIT; + scene->id.tag |= LIB_TAG_DOIT; #ifdef WITH_FREESTYLE if (re->freestyle_bmain) { for (scene = re->freestyle_bmain->scene.first; scene; scene = scene->id.next) - scene->id.flag &= ~LIB_DOIT; + scene->id.tag &= ~LIB_TAG_DOIT; } #endif @@ -2422,18 +2422,18 @@ void RE_MergeFullSample(Render *re, Main *bmain, Scene *sce, bNodeTree *ntree) Scene *nodescene = (Scene *)node->id; if (nodescene == NULL) nodescene = sce; - if (nodescene->id.flag & LIB_DOIT) { + if (nodescene->id.tag & LIB_TAG_DOIT) { nodescene->r.mode |= R_OSA; /* render struct needs tables */ RE_ReadRenderResult(sce, nodescene); - nodescene->id.flag &= ~LIB_DOIT; + nodescene->id.tag &= ~LIB_TAG_DOIT; } } } /* own render result should be read/allocated */ - if (re->scene->id.flag & LIB_DOIT) { + if (re->scene->id.tag & LIB_TAG_DOIT) { RE_ReadRenderResult(re->scene, re->scene); - re->scene->id.flag &= ~LIB_DOIT; + re->scene->id.tag &= ~LIB_TAG_DOIT; } /* and now we can draw (result is there) */ |