Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2015-12-27 13:53:50 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2015-12-27 14:00:33 +0300
commit3fcf535d2e003ad939fa1f1c7aa4d5da1b38aef7 (patch)
tree0cc5b044cdc1f7b6fa58ad1d0c3c6cafc51a7759 /source
parentec2ca11cba496294838bfb5fb76f7bfcef2fe8cc (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')
-rw-r--r--source/blender/blenkernel/BKE_blender.h2
-rw-r--r--source/blender/blenkernel/BKE_library.h6
-rw-r--r--source/blender/blenkernel/intern/anim_sys.c8
-rw-r--r--source/blender/blenkernel/intern/blender.c18
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c68
-rw-r--r--source/blender/blenkernel/intern/group.c6
-rw-r--r--source/blender/blenkernel/intern/image.c6
-rw-r--r--source/blender/blenkernel/intern/lamp.c8
-rw-r--r--source/blender/blenkernel/intern/library.c57
-rw-r--r--source/blender/blenkernel/intern/mask.c4
-rw-r--r--source/blender/blenkernel/intern/material.c8
-rw-r--r--source/blender/blenkernel/intern/object.c8
-rw-r--r--source/blender/blenkernel/intern/object_dupli.c2
-rw-r--r--source/blender/blenkernel/intern/scene.c8
-rw-r--r--source/blender/blenkernel/intern/sequencer.c6
-rw-r--r--source/blender/blenloader/intern/readfile.c216
-rw-r--r--source/blender/blenloader/intern/versioning_270.c14
-rw-r--r--source/blender/blenloader/intern/versioning_legacy.c4
-rw-r--r--source/blender/blenloader/intern/writefile.c4
-rw-r--r--source/blender/collada/SceneExporter.cpp2
-rw-r--r--source/blender/collada/collada_utils.cpp8
-rw-r--r--source/blender/depsgraph/intern/depsgraph.cc2
-rw-r--r--source/blender/depsgraph/intern/depsgraph_build.cc8
-rw-r--r--source/blender/depsgraph/intern/depsgraph_build_nodes.cc26
-rw-r--r--source/blender/depsgraph/intern/depsgraph_build_relations.cc36
-rw-r--r--source/blender/depsgraph/intern/depsgraph_tag.cc18
-rw-r--r--source/blender/editors/animation/anim_filter.c6
-rw-r--r--source/blender/editors/interface/interface_ops.c6
-rw-r--r--source/blender/editors/interface/interface_templates.c2
-rw-r--r--source/blender/editors/mesh/editmesh_utils.c2
-rw-r--r--source/blender/editors/object/object_add.c10
-rw-r--r--source/blender/editors/object/object_bake.c10
-rw-r--r--source/blender/editors/object/object_bake_api.c8
-rw-r--r--source/blender/editors/object/object_data_transfer.c8
-rw-r--r--source/blender/editors/object/object_relations.c40
-rw-r--r--source/blender/editors/object/object_transform.c22
-rw-r--r--source/blender/editors/render/render_internal.c8
-rw-r--r--source/blender/editors/space_node/node_edit.c6
-rw-r--r--source/blender/editors/space_outliner/outliner_draw.c6
-rw-r--r--source/blender/editors/space_outliner/outliner_tools.c2
-rw-r--r--source/blender/editors/space_outliner/outliner_tree.c8
-rw-r--r--source/blender/makesdna/DNA_ID.h83
-rw-r--r--source/blender/makesrna/intern/rna_ID.c8
-rw-r--r--source/blender/makesrna/intern/rna_scene.c4
-rw-r--r--source/blender/modifiers/intern/MOD_correctivesmooth.c2
-rw-r--r--source/blender/modifiers/intern/MOD_smoke.c16
-rw-r--r--source/blender/python/intern/bpy_library.c6
-rw-r--r--source/blender/render/intern/source/bake.c12
-rw-r--r--source/blender/render/intern/source/convertblender.c6
-rw-r--r--source/blender/render/intern/source/multires_bake.c10
-rw-r--r--source/blender/render/intern/source/pipeline.c26
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c14
-rw-r--r--source/gameengine/Converter/KX_BlenderSceneConverter.cpp6
-rw-r--r--source/gameengine/Ketsji/BL_ActionManager.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_Scene.h2
55 files changed, 471 insertions, 423 deletions
diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h
index 6886740c1af..9efaad81feb 100644
--- a/source/blender/blenkernel/BKE_blender.h
+++ b/source/blender/blenkernel/BKE_blender.h
@@ -42,7 +42,7 @@ extern "C" {
* and keep comment above the defines.
* Use STRINGIFY() rather than defining with quotes */
#define BLENDER_VERSION 276
-#define BLENDER_SUBVERSION 4
+#define BLENDER_SUBVERSION 5
/* Several breakages with 270, e.g. constraint deg vs rad */
#define BLENDER_MINVERSION 270
#define BLENDER_MINSUBVERSION 5
diff --git a/source/blender/blenkernel/BKE_library.h b/source/blender/blenkernel/BKE_library.h
index 9a961bafbf9..ff0cad2e5ed 100644
--- a/source/blender/blenkernel/BKE_library.h
+++ b/source/blender/blenkernel/BKE_library.h
@@ -102,8 +102,8 @@ void BKE_main_id_tag_idcode(struct Main *mainvar, const short type, const bool t
void BKE_main_id_tag_listbase(struct ListBase *lb, const bool tag);
void BKE_main_id_tag_all(struct Main *mainvar, const bool tag);
-void BKE_main_id_flag_listbase(ListBase *lb, const short flag, const bool value);
-void BKE_main_id_flag_all(struct Main *bmain, const short flag, const bool value);
+void BKE_main_id_flag_listbase(ListBase *lb, const int flag, const bool value);
+void BKE_main_id_flag_all(struct Main *bmain, const int flag, const bool value);
void BKE_main_id_clear_newpoins(struct Main *bmain);
@@ -129,7 +129,7 @@ void BKE_library_callback_free_editor_id_reference_set(BKE_library_free_editor_i
/* use when "" is given to new_id() */
#define ID_FALLBACK_NAME N_("Untitled")
-#define IS_TAGGED(_id) ((_id) && (((ID *)_id)->flag & LIB_DOIT))
+#define IS_TAGGED(_id) ((_id) && (((ID *)_id)->tag & LIB_TAG_DOIT))
#ifdef __cplusplus
}
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c
index 2ddf01433eb..41950c59a22 100644
--- a/source/blender/blenkernel/intern/anim_sys.c
+++ b/source/blender/blenkernel/intern/anim_sys.c
@@ -1596,8 +1596,8 @@ static bool animsys_write_rna_setting(PointerRNA *ptr, char *path, int array_ind
/* for cases like duplifarmes it's only a temporary so don't
* notify anyone of updates */
- if (!(id->flag & LIB_ANIM_NO_RECALC)) {
- id->flag |= LIB_ID_RECALC;
+ if (!(id->tag & LIB_TAG_ANIM_NO_RECALC)) {
+ id->tag |= LIB_TAG_ID_RECALC;
DAG_id_type_tag(G.main, GS(id->name));
}
}
@@ -2562,8 +2562,8 @@ static void animsys_evaluate_nla(ListBase *echannels, PointerRNA *ptr, AnimData
*/
if (ptr->id.data != NULL) {
ID *id = ptr->id.data;
- if (!(id->flag & LIB_ANIM_NO_RECALC)) {
- id->flag |= LIB_ID_RECALC;
+ if (!(id->tag & LIB_TAG_ANIM_NO_RECALC)) {
+ id->tag |= LIB_TAG_ID_RECALC;
DAG_id_type_tag(G.main, GS(id->name));
}
}
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index fc76c298802..8b447379d01 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -963,12 +963,12 @@ Main *BKE_undo_get_main(Scene **r_scene)
void BKE_copybuffer_begin(Main *bmain)
{
/* set all id flags to zero; */
- BKE_main_id_flag_all(bmain, LIB_NEED_EXPAND | LIB_DOIT, false);
+ BKE_main_id_flag_all(bmain, LIB_TAG_NEED_EXPAND | LIB_TAG_DOIT, false);
}
void BKE_copybuffer_tag_ID(ID *id)
{
- id->flag |= LIB_NEED_EXPAND | LIB_DOIT;
+ id->tag |= LIB_TAG_NEED_EXPAND | LIB_TAG_DOIT;
}
static void copybuffer_doit(void *UNUSED(handle), Main *UNUSED(bmain), void *vid)
@@ -976,8 +976,8 @@ static void copybuffer_doit(void *UNUSED(handle), Main *UNUSED(bmain), void *vid
if (vid) {
ID *id = vid;
/* only tag for need-expand if not done, prevents eternal loops */
- if ((id->flag & LIB_DOIT) == 0)
- id->flag |= LIB_NEED_EXPAND | LIB_DOIT;
+ if ((id->tag & LIB_TAG_DOIT) == 0)
+ id->tag |= LIB_TAG_NEED_EXPAND | LIB_TAG_DOIT;
}
}
@@ -1006,7 +1006,7 @@ int BKE_copybuffer_save(const char *filename, ReportList *reports)
for (id = lb2->first; id; id = nextid) {
nextid = id->next;
- if (id->flag & LIB_DOIT) {
+ if (id->tag & LIB_TAG_DOIT) {
BLI_remlink(lb2, id);
BLI_addtail(lb1, id);
}
@@ -1033,7 +1033,7 @@ int BKE_copybuffer_save(const char *filename, ReportList *reports)
MEM_freeN(mainb);
/* set id flag to zero; */
- BKE_main_id_flag_all(G.main, LIB_NEED_EXPAND | LIB_DOIT, false);
+ BKE_main_id_flag_all(G.main, LIB_TAG_NEED_EXPAND | LIB_TAG_DOIT, false);
if (path_list_backup) {
BKE_bpath_list_restore(G.main, path_list_flag, path_list_backup);
@@ -1064,8 +1064,8 @@ int BKE_copybuffer_paste(bContext *C, const char *libname, ReportList *reports)
/* tag everything, all untagged data can be made local
* its also generally useful to know what is new
*
- * take extra care BKE_main_id_flag_all(bmain, LIB_LINK_TAG, false) is called after! */
- BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, true);
+ * take extra care BKE_main_id_flag_all(bmain, LIB_TAG_PRE_EXISTING, false) is called after! */
+ BKE_main_id_flag_all(bmain, LIB_TAG_PRE_EXISTING, true);
/* here appending/linking starts */
mainl = BLO_library_link_begin(bmain, &bh, libname);
@@ -1084,7 +1084,7 @@ int BKE_copybuffer_paste(bContext *C, const char *libname, ReportList *reports)
/* important we unset, otherwise these object wont
* link into other scenes from this blend file */
- BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, false);
+ BKE_main_id_flag_all(bmain, LIB_TAG_PRE_EXISTING, false);
/* recreate dependency graph to include new objects */
DAG_relations_tag_update(bmain);
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 17faae053eb..e313ad7c2a1 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -398,13 +398,13 @@ static void dag_add_shader_nodetree_driver_relations(DagForest *dag, DagNode *no
static void dag_add_material_driver_relations(DagForest *dag, DagNode *node, Material *ma)
{
/* Prevent infinite recursion by checking (and tagging the material) as having been visited
- * already (see build_dag()). This assumes ma->id.flag & LIB_DOIT isn't set by anything else
+ * already (see build_dag()). This assumes ma->id.tag & LIB_TAG_DOIT isn't set by anything else
* in the meantime... [#32017]
*/
- if (ma->id.flag & LIB_DOIT)
+ if (ma->id.tag & LIB_TAG_DOIT)
return;
- ma->id.flag |= LIB_DOIT;
+ ma->id.tag |= LIB_TAG_DOIT;
/* material itself */
if (ma->adt)
@@ -418,20 +418,20 @@ static void dag_add_material_driver_relations(DagForest *dag, DagNode *node, Mat
if (ma->nodetree)
dag_add_shader_nodetree_driver_relations(dag, node, ma->nodetree);
- ma->id.flag &= ~LIB_DOIT;
+ ma->id.tag &= ~LIB_TAG_DOIT;
}
/* recursive handling for lamp drivers */
static void dag_add_lamp_driver_relations(DagForest *dag, DagNode *node, Lamp *la)
{
/* Prevent infinite recursion by checking (and tagging the lamp) as having been visited
- * already (see build_dag()). This assumes la->id.flag & LIB_DOIT isn't set by anything else
+ * already (see build_dag()). This assumes la->id.tag & LIB_TAG_DOIT isn't set by anything else
* in the meantime... [#32017]
*/
- if (la->id.flag & LIB_DOIT)
+ if (la->id.tag & LIB_TAG_DOIT)
return;
- la->id.flag |= LIB_DOIT;
+ la->id.tag |= LIB_TAG_DOIT;
/* lamp itself */
if (la->adt)
@@ -445,7 +445,7 @@ static void dag_add_lamp_driver_relations(DagForest *dag, DagNode *node, Lamp *l
if (la->nodetree)
dag_add_shader_nodetree_driver_relations(dag, node, la->nodetree);
- la->id.flag &= ~LIB_DOIT;
+ la->id.tag &= ~LIB_TAG_DOIT;
}
static void check_and_create_collision_relation(DagForest *dag, Object *ob, DagNode *node, Object *ob1, int skip_forcefield, bool no_collision)
@@ -903,10 +903,10 @@ static void build_dag_group(DagForest *dag, DagNode *scenenode, Main *bmain, Sce
{
GroupObject *go;
- if (group->id.flag & LIB_DOIT)
+ if (group->id.tag & LIB_TAG_DOIT)
return;
- group->id.flag |= LIB_DOIT;
+ group->id.tag |= LIB_TAG_DOIT;
for (go = group->gobject.first; go; go = go->next) {
build_dag_object(dag, scenenode, bmain, scene, go->ob, mask);
@@ -932,7 +932,7 @@ DagForest *build_dag(Main *bmain, Scene *sce, short mask)
sce->theDag = dag;
}
- /* clear "LIB_DOIT" flag from all materials, to prevent infinite recursion problems later [#32017] */
+ /* clear "LIB_TAG_DOIT" flag from all materials, to prevent infinite recursion problems later [#32017] */
BKE_main_id_tag_idcode(bmain, ID_MA, false);
BKE_main_id_tag_idcode(bmain, ID_LA, false);
BKE_main_id_tag_idcode(bmain, ID_GR, false);
@@ -1402,15 +1402,15 @@ static void scene_sort_groups(Main *bmain, Scene *sce)
/* test; are group objects all in this scene? */
for (ob = bmain->object.first; ob; ob = ob->id.next) {
- ob->id.flag &= ~LIB_DOIT;
+ ob->id.tag &= ~LIB_TAG_DOIT;
ob->id.newid = NULL; /* newid abuse for GroupObject */
}
for (base = sce->base.first; base; base = base->next)
- base->object->id.flag |= LIB_DOIT;
+ base->object->id.tag |= LIB_TAG_DOIT;
for (group = bmain->group.first; group; group = group->id.next) {
for (go = group->gobject.first; go; go = go->next) {
- if ((go->ob->id.flag & LIB_DOIT) == 0)
+ if ((go->ob->id.tag & LIB_TAG_DOIT) == 0)
break;
}
/* this group is entirely in this scene */
@@ -1481,7 +1481,7 @@ static bool check_object_tagged_for_update(Object *object)
if (ELEM(object->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL, OB_LATTICE)) {
ID *data_id = object->data;
- return (data_id->flag & (LIB_ID_RECALC_DATA | LIB_ID_RECALC)) != 0;
+ return (data_id->tag & (LIB_TAG_ID_RECALC_DATA | LIB_TAG_ID_RECALC)) != 0;
}
return false;
@@ -1729,13 +1729,13 @@ void DAG_scene_free(Scene *sce)
static void lib_id_recalc_tag(Main *bmain, ID *id)
{
- id->flag |= LIB_ID_RECALC;
+ id->tag |= LIB_TAG_ID_RECALC;
DAG_id_type_tag(bmain, GS(id->name));
}
static void lib_id_recalc_data_tag(Main *bmain, ID *id)
{
- id->flag |= LIB_ID_RECALC_DATA;
+ id->tag |= LIB_TAG_ID_RECALC_DATA;
DAG_id_type_tag(bmain, GS(id->name));
}
@@ -2262,10 +2262,10 @@ static void dag_group_update_flags(Main *bmain, Scene *scene, Group *group, cons
{
GroupObject *go;
- if (group->id.flag & LIB_DOIT)
+ if (group->id.tag & LIB_TAG_DOIT)
return;
- group->id.flag |= LIB_DOIT;
+ group->id.tag |= LIB_TAG_DOIT;
for (go = group->gobject.first; go; go = go->next) {
if (do_time)
@@ -2301,7 +2301,7 @@ void DAG_scene_update_flags(Main *bmain, Scene *scene, unsigned int lay, const b
dag_object_time_update_flags(bmain, sce_iter, ob);
}
- /* recursively tag groups with LIB_DOIT, and update flags for objects */
+ /* recursively tag groups with LIB_TAG_DOIT, and update flags for objects */
if (ob->dup_group)
dag_group_update_flags(bmain, scene, ob->dup_group, do_time);
}
@@ -2324,12 +2324,12 @@ void DAG_scene_update_flags(Main *bmain, Scene *scene, unsigned int lay, const b
/* and store the info in groupobject */
for (group = bmain->group.first; group; group = group->id.next) {
- if (group->id.flag & LIB_DOIT) {
+ if (group->id.tag & LIB_TAG_DOIT) {
for (go = group->gobject.first; go; go = go->next) {
go->recalc = go->ob->recalc;
// printf("ob %s recalc %d\n", go->ob->id.name, go->recalc);
}
- group->id.flag &= ~LIB_DOIT;
+ group->id.tag &= ~LIB_TAG_DOIT;
}
}
@@ -2356,14 +2356,14 @@ static void dag_current_scene_layers(Main *bmain, ListBase *lb)
/* if we have a windowmanager, look into windows */
if ((wm = bmain->wm.first)) {
- BKE_main_id_flag_listbase(&bmain->scene, LIB_DOIT, 1);
+ BKE_main_id_flag_listbase(&bmain->scene, LIB_TAG_DOIT, 1);
for (win = wm->windows.first; win; win = win->next) {
if (win->screen && win->screen->scene->theDag) {
Scene *scene = win->screen->scene;
DagSceneLayer *dsl;
- if (scene->id.flag & LIB_DOIT) {
+ if (scene->id.tag & LIB_TAG_DOIT) {
dsl = MEM_mallocN(sizeof(DagSceneLayer), "dag scene layer");
BLI_addtail(lb, dsl);
@@ -2371,7 +2371,7 @@ static void dag_current_scene_layers(Main *bmain, ListBase *lb)
dsl->scene = scene;
dsl->layer = BKE_screen_visible_layers(win->screen, scene);
- scene->id.flag &= ~LIB_DOIT;
+ scene->id.tag &= ~LIB_TAG_DOIT;
}
else {
/* It is possible that multiple windows shares the same scene
@@ -2413,20 +2413,20 @@ static void dag_group_on_visible_update(Scene *scene, Group *group)
{
GroupObject *go;
- if (group->id.flag & LIB_DOIT)
+ if (group->id.tag & LIB_TAG_DOIT)
return;
- group->id.flag |= LIB_DOIT;
+ group->id.tag |= LIB_TAG_DOIT;
for (go = group->gobject.first; go; go = go->next) {
if (ELEM(go->ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL, OB_LATTICE)) {
go->ob->recalc |= OB_RECALC_DATA;
- go->ob->id.flag |= LIB_DOIT;
+ go->ob->id.tag |= LIB_TAG_DOIT;
lib_id_recalc_tag(G.main, &go->ob->id);
}
if (go->ob->proxy_from) {
go->ob->recalc |= OB_RECALC_OB;
- go->ob->id.flag |= LIB_DOIT;
+ go->ob->id.tag |= LIB_TAG_DOIT;
lib_id_recalc_tag(G.main, &go->ob->id);
}
@@ -2749,7 +2749,7 @@ void DAG_ids_flush_tagged(Main *bmain)
* looping over all ID's in case there are no tags */
if (id && bmain->id_tag_update[id->name[0]]) {
for (; id; id = id->next) {
- if (id->flag & (LIB_ID_RECALC | LIB_ID_RECALC_DATA)) {
+ if (id->tag & (LIB_TAG_ID_RECALC | LIB_TAG_ID_RECALC_DATA)) {
for (dsl = listbase.first; dsl; dsl = dsl->next)
dag_id_flush_update(bmain, dsl->scene, id);
@@ -2874,13 +2874,13 @@ void DAG_ids_clear_recalc(Main *bmain)
* looping over all ID's in case there are no tags */
if (id && bmain->id_tag_update[id->name[0]]) {
for (; id; id = id->next) {
- if (id->flag & (LIB_ID_RECALC | LIB_ID_RECALC_DATA))
- id->flag &= ~(LIB_ID_RECALC | LIB_ID_RECALC_DATA);
+ if (id->tag & (LIB_TAG_ID_RECALC | LIB_TAG_ID_RECALC_DATA))
+ id->tag &= ~(LIB_TAG_ID_RECALC | LIB_TAG_ID_RECALC_DATA);
/* some ID's contain semi-datablock nodetree */
ntree = ntreeFromID(id);
- if (ntree && (ntree->id.flag & (LIB_ID_RECALC | LIB_ID_RECALC_DATA)))
- ntree->id.flag &= ~(LIB_ID_RECALC | LIB_ID_RECALC_DATA);
+ if (ntree && (ntree->id.tag & (LIB_TAG_ID_RECALC | LIB_TAG_ID_RECALC_DATA)))
+ ntree->id.tag &= ~(LIB_TAG_ID_RECALC | LIB_TAG_ID_RECALC_DATA);
}
}
}
diff --git a/source/blender/blenkernel/intern/group.c b/source/blender/blenkernel/intern/group.c
index 96cf0fe574a..4506f932413 100644
--- a/source/blender/blenkernel/intern/group.c
+++ b/source/blender/blenkernel/intern/group.c
@@ -232,12 +232,12 @@ static bool group_object_cyclic_check_internal(Object *object, Group *group)
{
if (object->dup_group) {
Group *dup_group = object->dup_group;
- if ((dup_group->id.flag & LIB_DOIT) == 0) {
+ if ((dup_group->id.tag & LIB_TAG_DOIT) == 0) {
/* Cycle already exists in groups, let's prevent further crappyness */
return true;
}
/* flag the object to identify cyclic dependencies in further dupli groups */
- dup_group->id.flag &= ~LIB_DOIT;
+ dup_group->id.tag &= ~LIB_TAG_DOIT;
if (dup_group == group)
return true;
@@ -251,7 +251,7 @@ static bool group_object_cyclic_check_internal(Object *object, Group *group)
}
/* un-flag the object, it's allowed to have the same group multiple times in parallel */
- dup_group->id.flag |= LIB_DOIT;
+ dup_group->id.tag |= LIB_TAG_DOIT;
}
return false;
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 21d8f8dde67..394237f6c14 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -1136,14 +1136,14 @@ void BKE_image_free_all_textures(void)
#endif
for (ima = G.main->image.first; ima; ima = ima->id.next)
- ima->id.flag &= ~LIB_DOIT;
+ ima->id.tag &= ~LIB_TAG_DOIT;
for (tex = G.main->tex.first; tex; tex = tex->id.next)
if (tex->ima)
- tex->ima->id.flag |= LIB_DOIT;
+ tex->ima->id.tag |= LIB_TAG_DOIT;
for (ima = G.main->image.first; ima; ima = ima->id.next) {
- if (ima->cache && (ima->id.flag & LIB_DOIT)) {
+ if (ima->cache && (ima->id.tag & LIB_TAG_DOIT)) {
#ifdef CHECK_FREED_SIZE
uintptr_t old_size = image_mem_size(ima);
#endif
diff --git a/source/blender/blenkernel/intern/lamp.c b/source/blender/blenkernel/intern/lamp.c
index 7fcbd9cafb7..9601a93b1f1 100644
--- a/source/blender/blenkernel/intern/lamp.c
+++ b/source/blender/blenkernel/intern/lamp.c
@@ -265,12 +265,12 @@ static void lamp_node_drivers_update(Scene *scene, bNodeTree *ntree, float ctime
void lamp_drivers_update(Scene *scene, Lamp *la, float ctime)
{
/* Prevent infinite recursion by checking (and tagging the lamp) as having been visited already
- * (see BKE_scene_update_tagged()). This assumes la->id.flag & LIB_DOIT isn't set by anything else
+ * (see BKE_scene_update_tagged()). This assumes la->id.tag & LIB_TAG_DOIT isn't set by anything else
* in the meantime... [#32017] */
- if (la->id.flag & LIB_DOIT)
+ if (la->id.tag & LIB_TAG_DOIT)
return;
- la->id.flag |= LIB_DOIT;
+ la->id.tag |= LIB_TAG_DOIT;
/* lamp itself */
if (la->adt && la->adt->drivers.first)
@@ -280,6 +280,6 @@ void lamp_drivers_update(Scene *scene, Lamp *la, float ctime)
if (la->nodetree)
lamp_node_drivers_update(scene, la->nodetree, ctime);
- la->id.flag &= ~LIB_DOIT;
+ la->id.tag &= ~LIB_TAG_DOIT;
}
diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c
index f1e0bc69dbc..14e21a8b014 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -154,9 +154,9 @@ void id_lib_extern(ID *id)
{
if (id) {
BLI_assert(BKE_idcode_is_linkable(GS(id->name)));
- if (id->flag & LIB_INDIRECT) {
- id->flag -= LIB_INDIRECT;
- id->flag |= LIB_EXTERN;
+ if (id->tag & LIB_TAG_INDIRECT) {
+ id->tag -= LIB_TAG_INDIRECT;
+ id->tag |= LIB_TAG_EXTERN;
}
}
}
@@ -223,7 +223,7 @@ void id_fake_user_clear(ID *id)
* if the block can be made local. */
bool id_make_local(ID *id, bool test)
{
- if (id->flag & LIB_INDIRECT)
+ if (id->tag & LIB_TAG_INDIRECT)
return false;
switch (GS(id->name)) {
@@ -549,21 +549,27 @@ ListBase *which_libbase(Main *mainlib, short type)
return NULL;
}
-/* Flag all ids in listbase */
-void BKE_main_id_flag_listbase(ListBase *lb, const short flag, const bool value)
+/**
+ * Clear or set given flags for all ids in listbase (runtime flags only).
+ */
+void BKE_main_id_flag_listbase(ListBase *lb, const int flag, const bool value)
{
ID *id;
if (value) {
- for (id = lb->first; id; id = id->next) id->flag |= flag;
+ for (id = lb->first; id; id = id->next)
+ id->tag |= flag;
}
else {
- const short nflag = ~flag;
- for (id = lb->first; id; id = id->next) id->flag &= nflag;
+ const int nflag = ~flag;
+ for (id = lb->first; id; id = id->next)
+ id->tag &= nflag;
}
}
-/* Flag all ids in listbase */
-void BKE_main_id_flag_all(Main *bmain, const short flag, const bool value)
+/**
+ * Clear or set given flags for all ids in bmain (runtime flags only).
+ */
+void BKE_main_id_flag_all(Main *bmain, const int flag, const bool value)
{
ListBase *lbarray[MAX_LIBARRAY];
int a;
@@ -952,7 +958,7 @@ void *BKE_libblock_copy_ex(Main *bmain, ID *id)
}
id->newid = idn;
- idn->flag |= LIB_NEW;
+ idn->tag |= LIB_TAG_NEW;
BKE_libblock_copy_data(idn, id, false);
@@ -978,7 +984,7 @@ void *BKE_libblock_copy_nolib(ID *id, const bool do_action)
}
id->newid = idn;
- idn->flag |= LIB_NEW;
+ idn->tag |= LIB_TAG_NEW;
idn->us = 1;
BKE_libblock_copy_data(idn, id, do_action);
@@ -1000,8 +1006,8 @@ static bool id_relink_looper(void *UNUSED(user_data), ID **id_pointer, const int
BKE_library_update_ID_link_user(id->newid, id, cd_flag);
*id_pointer = id->newid;
}
- else if (id->flag & LIB_NEW) {
- id->flag &= ~LIB_NEW;
+ else if (id->tag & LIB_TAG_NEW) {
+ id->tag &= ~LIB_TAG_NEW;
BKE_libblock_relink(id);
}
}
@@ -1632,7 +1638,7 @@ void id_clear_lib_data(Main *bmain, ID *id)
id_fake_user_clear(id);
id->lib = NULL;
- id->flag = LIB_LOCAL;
+ id->tag |= LIB_TAG_LOCAL;
new_id(which_libbase(bmain, GS(id->name)), id, NULL);
/* internal bNodeTree blocks inside ID types below
@@ -1666,7 +1672,7 @@ void BKE_main_id_clear_newpoins(Main *bmain)
id = lbarray[a]->first;
while (id) {
id->newid = NULL;
- id->flag &= ~LIB_NEW;
+ id->tag &= ~LIB_TAG_NEW;
id = id->next;
}
}
@@ -1674,7 +1680,8 @@ void BKE_main_id_clear_newpoins(Main *bmain)
static void lib_indirect_test_id(ID *id, Library *lib)
{
-#define LIBTAG(a) if (a && a->id.lib) { a->id.flag &= ~LIB_INDIRECT; a->id.flag |= LIB_EXTERN; } (void)0
+#define LIBTAG(a) \
+ if (a && a->id.lib) { a->id.tag &= ~LIB_TAG_INDIRECT; a->id.tag |= LIB_TAG_EXTERN; } (void)0
if (id->lib) {
/* datablocks that were indirectly related are now direct links
@@ -1723,12 +1730,12 @@ void BKE_main_id_tag_listbase(ListBase *lb, const bool tag)
ID *id;
if (tag) {
for (id = lb->first; id; id = id->next) {
- id->flag |= LIB_DOIT;
+ id->tag |= LIB_TAG_DOIT;
}
}
else {
for (id = lb->first; id; id = id->next) {
- id->flag &= ~LIB_DOIT;
+ id->tag &= ~LIB_TAG_DOIT;
}
}
}
@@ -1767,27 +1774,27 @@ void BKE_library_make_local(Main *bmain, Library *lib, bool untagged_only)
id->newid = NULL;
idn = id->next; /* id is possibly being inserted again */
- /* The check on the second line (LIB_PRE_EXISTING) is done so its
+ /* The check on the second line (LIB_TAG_PRE_EXISTING) is done so its
* possible to tag data you don't want to be made local, used for
* appending data, so any libdata already linked wont become local
* (very nasty to discover all your links are lost after appending)
* */
- if (id->flag & (LIB_EXTERN | LIB_INDIRECT | LIB_NEW) &&
- ((untagged_only == false) || !(id->flag & LIB_PRE_EXISTING)))
+ if (id->tag & (LIB_TAG_EXTERN | LIB_TAG_INDIRECT | LIB_TAG_NEW) &&
+ ((untagged_only == false) || !(id->tag & LIB_TAG_PRE_EXISTING)))
{
if (lib == NULL || id->lib == lib) {
if (id->lib) {
/* for Make Local > All we should be calling id_make_local,
* but doing that breaks append (see #36003 and #36006), we
* we should make it work with all datablocks and id.us==0 */
- id_clear_lib_data(bmain, id); /* sets 'id->flag' */
+ id_clear_lib_data(bmain, id); /* sets 'id->tag' */
/* why sort alphabetically here but not in
* id_clear_lib_data() ? - campbell */
id_sort_by_name(lbarray[a], id);
}
else {
- id->flag &= ~(LIB_EXTERN | LIB_INDIRECT | LIB_NEW);
+ id->tag &= ~(LIB_TAG_EXTERN | LIB_TAG_INDIRECT | LIB_TAG_NEW);
}
}
}
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c
index cd26691c3e1..12db3a87ba0 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -1589,8 +1589,8 @@ void BKE_mask_update_scene(Main *bmain, Scene *scene)
Mask *mask;
for (mask = bmain->mask.first; mask; mask = mask->id.next) {
- if (mask->id.flag & (LIB_ID_RECALC | LIB_ID_RECALC_DATA)) {
- bool do_new_frame = (mask->id.flag & LIB_ID_RECALC_DATA) != 0;
+ if (mask->id.tag & (LIB_TAG_ID_RECALC | LIB_TAG_ID_RECALC_DATA)) {
+ bool do_new_frame = (mask->id.tag & LIB_TAG_ID_RECALC_DATA) != 0;
BKE_mask_evaluate_all_masks(bmain, CFRA, do_new_frame);
}
}
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index b913e6de433..809b45d4b36 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -1312,13 +1312,13 @@ void material_drivers_update(Scene *scene, Material *ma, float ctime)
// printf("material_drivers_update(%s, %s)\n", scene->id.name, ma->id.name);
/* Prevent infinite recursion by checking (and tagging the material) as having been visited already
- * (see BKE_scene_update_tagged()). This assumes ma->id.flag & LIB_DOIT isn't set by anything else
+ * (see BKE_scene_update_tagged()). This assumes ma->id.tag & LIB_TAG_DOIT isn't set by anything else
* in the meantime... [#32017]
*/
- if (ma->id.flag & LIB_DOIT)
+ if (ma->id.tag & LIB_TAG_DOIT)
return;
- ma->id.flag |= LIB_DOIT;
+ ma->id.tag |= LIB_TAG_DOIT;
/* material itself */
if (ma->adt && ma->adt->drivers.first) {
@@ -1330,7 +1330,7 @@ void material_drivers_update(Scene *scene, Material *ma, float ctime)
material_node_drivers_update(scene, ma->nodetree, ctime);
}
- ma->id.flag &= ~LIB_DOIT;
+ ma->id.tag &= ~LIB_TAG_DOIT;
}
bool object_remove_material_slot(Object *ob)
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 70da0111752..89f22b8e742 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1802,7 +1802,7 @@ void BKE_object_make_proxy(Object *ob, Object *target, Object *gob)
/* set object type and link to data */
ob->type = target->type;
ob->data = target->data;
- id_us_plus((ID *)ob->data); /* ensures lib data becomes LIB_EXTERN */
+ id_us_plus((ID *)ob->data); /* ensures lib data becomes LIB_TAG_EXTERN */
/* copy material and index information */
ob->actcol = ob->totcol = 0;
@@ -3795,13 +3795,13 @@ static Object *obrel_armature_find(Object *ob)
static bool obrel_list_test(Object *ob)
{
- return ob && !(ob->id.flag & LIB_DOIT);
+ return ob && !(ob->id.tag & LIB_TAG_DOIT);
}
static void obrel_list_add(LinkNode **links, Object *ob)
{
BLI_linklist_prepend(links, ob);
- ob->id.flag |= LIB_DOIT;
+ ob->id.tag |= LIB_TAG_DOIT;
}
/*
@@ -3819,7 +3819,7 @@ LinkNode *BKE_object_relational_superset(struct Scene *scene, eObjectSet objectS
/* Remove markers from all objects */
for (base = scene->base.first; base; base = base->next) {
- base->object->id.flag &= ~LIB_DOIT;
+ base->object->id.tag &= ~LIB_TAG_DOIT;
}
/* iterate over all selected and visible objects */
diff --git a/source/blender/blenkernel/intern/object_dupli.c b/source/blender/blenkernel/intern/object_dupli.c
index 8abe4bdbb97..5da9fcbb4fe 100644
--- a/source/blender/blenkernel/intern/object_dupli.c
+++ b/source/blender/blenkernel/intern/object_dupli.c
@@ -354,7 +354,7 @@ static void make_duplis_frames(const DupliContext *ctx)
/* special flag to avoid setting recalc flags to notify the depsgraph of
* updates, as this is not a permanent change to the object */
- ob->id.flag |= LIB_ANIM_NO_RECALC;
+ ob->id.tag |= LIB_TAG_ANIM_NO_RECALC;
for (scene->r.cfra = ob->dupsta; scene->r.cfra <= dupend; scene->r.cfra++) {
int ok = 1;
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 73d211f5c44..9f0a49ba1bc 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -1757,8 +1757,8 @@ static void prepare_mesh_for_viewport_render(Main *bmain, Scene *scene)
if (obedit) {
Mesh *mesh = obedit->data;
if ((obedit->type == OB_MESH) &&
- ((obedit->id.flag & LIB_ID_RECALC_ALL) ||
- (mesh->id.flag & LIB_ID_RECALC_ALL)))
+ ((obedit->id.tag & LIB_TAG_ID_RECALC_ALL) ||
+ (mesh->id.tag & LIB_TAG_ID_RECALC_ALL)))
{
if (check_rendered_viewport_visible(bmain)) {
BMesh *bm = mesh->edit_btmesh->bm;
@@ -1801,7 +1801,7 @@ void BKE_scene_update_tagged(EvaluationContext *eval_ctx, Main *bmain, Scene *sc
/* removed calls to quick_cache, see pointcache.c */
- /* clear "LIB_DOIT" flag from all materials, to prevent infinite recursion problems later
+ /* clear "LIB_TAG_DOIT" flag from all materials, to prevent infinite recursion problems later
* when trying to find materials with drivers that need evaluating [#32017]
*/
BKE_main_id_tag_idcode(bmain, ID_MA, false);
@@ -1960,7 +1960,7 @@ void BKE_scene_update_for_newframe_ex(EvaluationContext *eval_ctx, Main *bmain,
}
#endif
- /* clear "LIB_DOIT" flag from all materials, to prevent infinite recursion problems later
+ /* clear "LIB_TAG_DOIT" flag from all materials, to prevent infinite recursion problems later
* when trying to find materials with drivers that need evaluating [#32017]
*/
BKE_main_id_tag_idcode(bmain, ID_MA, false);
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 7c420549a0d..588f591b2d1 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -3402,16 +3402,16 @@ static ImBuf *do_render_strip_uncached(const SeqRenderData *context, Sequence *s
if (seq->scene && (context->scene != seq->scene)) {
#ifdef USE_SCENE_RECURSIVE_HACK
/* weak recusrive check, same as T32017 */
- if (seq->scene->id.flag & LIB_DOIT) {
+ if (seq->scene->id.tag & LIB_TAG_DOIT) {
break;
}
- seq->scene->id.flag |= LIB_DOIT;
+ seq->scene->id.tag |= LIB_TAG_DOIT;
#endif
ibuf = do_render_strip_seqbase(context, seq, nr, use_preprocess);
#ifdef USE_SCENE_RECURSIVE_HACK
- seq->scene->id.flag &= ~LIB_DOIT;
+ seq->scene->id.tag &= ~LIB_TAG_DOIT;
#endif
}
}
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 177055e7206..30faa3709ba 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -2158,8 +2158,8 @@ static void lib_link_brush(FileData *fd, Main *main)
/* only link ID pointers */
for (brush = main->brush.first; brush; brush = brush->id.next) {
- if (brush->id.flag & LIB_NEED_LINK) {
- brush->id.flag -= LIB_NEED_LINK;
+ if (brush->id.tag & LIB_TAG_NEED_LINK) {
+ brush->id.tag &= ~LIB_TAG_NEED_LINK;
brush->mtex.tex = newlibadr_us(fd, brush->id.lib, brush->mtex.tex);
brush->mask_mtex.tex = newlibadr_us(fd, brush->id.lib, brush->mask_mtex.tex);
@@ -2194,8 +2194,8 @@ static void lib_link_palette(FileData *UNUSED(fd), Main *main)
/* only link ID pointers */
for (palette = main->palettes.first; palette; palette = palette->id.next) {
- if (palette->id.flag & LIB_NEED_LINK) {
- palette->id.flag -= LIB_NEED_LINK;
+ if (palette->id.tag & LIB_TAG_NEED_LINK) {
+ palette->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -2212,8 +2212,8 @@ static void lib_link_paint_curve(FileData *UNUSED(fd), Main *main)
/* only link ID pointers */
for (pc = main->paintcurves.first; pc; pc = pc->id.next) {
- if (pc->id.flag & LIB_NEED_LINK) {
- pc->id.flag -= LIB_NEED_LINK;
+ if (pc->id.tag & LIB_TAG_NEED_LINK) {
+ pc->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -2246,13 +2246,13 @@ static void lib_link_ipo(FileData *fd, Main *main)
Ipo *ipo;
for (ipo = main->ipo.first; ipo; ipo = ipo->id.next) {
- if (ipo->id.flag & LIB_NEED_LINK) {
+ if (ipo->id.tag & LIB_TAG_NEED_LINK) {
IpoCurve *icu;
for (icu = ipo->curve.first; icu; icu = icu->next) {
if (icu->driver)
icu->driver->ob = newlibadr(fd, ipo->id.lib, icu->driver->ob);
}
- ipo->id.flag -= LIB_NEED_LINK;
+ ipo->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -2468,8 +2468,8 @@ static void lib_link_action(FileData *fd, Main *main)
bActionChannel *chan;
for (act = main->action.first; act; act = act->id.next) {
- if (act->id.flag & LIB_NEED_LINK) {
- act->id.flag -= LIB_NEED_LINK;
+ if (act->id.tag & LIB_TAG_NEED_LINK) {
+ act->id.tag &= ~LIB_TAG_NEED_LINK;
// XXX deprecated - old animation system <<<
for (chan=act->chanbase.first; chan; chan=chan->next) {
@@ -2719,8 +2719,8 @@ static void lib_link_nodetree(FileData *fd, Main *main)
/* only link ID pointers */
for (ntree = main->nodetree.first; ntree; ntree = ntree->id.next) {
- if (ntree->id.flag & LIB_NEED_LINK) {
- ntree->id.flag -= LIB_NEED_LINK;
+ if (ntree->id.tag & LIB_TAG_NEED_LINK) {
+ ntree->id.tag &= ~LIB_TAG_NEED_LINK;
lib_link_ntree(fd, &ntree->id, ntree);
}
}
@@ -2983,7 +2983,7 @@ static void direct_link_nodetree(FileData *fd, bNodeTree *ntree)
ntree->adt = newdataadr(fd, ntree->adt);
direct_link_animdata(fd, ntree->adt);
- ntree->id.flag &= ~(LIB_ID_RECALC|LIB_ID_RECALC_DATA);
+ ntree->id.tag &= ~(LIB_TAG_ID_RECALC|LIB_TAG_ID_RECALC_DATA);
link_list(fd, &ntree->nodes);
for (node = ntree->nodes.first; node; node = node->next) {
@@ -3237,9 +3237,9 @@ static void lib_link_armature(FileData *fd, Main *main)
bArmature *arm;
for (arm = main->armature.first; arm; arm = arm->id.next) {
- if (arm->id.flag & LIB_NEED_LINK) {
+ if (arm->id.tag & LIB_TAG_NEED_LINK) {
lib_link_animdata(fd, &arm->id, arm->adt);
- arm->id.flag -= LIB_NEED_LINK;
+ arm->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -3286,14 +3286,14 @@ static void lib_link_camera(FileData *fd, Main *main)
Camera *ca;
for (ca = main->camera.first; ca; ca = ca->id.next) {
- if (ca->id.flag & LIB_NEED_LINK) {
+ if (ca->id.tag & LIB_TAG_NEED_LINK) {
lib_link_animdata(fd, &ca->id, ca->adt);
ca->ipo = newlibadr_us(fd, ca->id.lib, ca->ipo); // XXX deprecated - old animation system
ca->dof_ob = newlibadr_us(fd, ca->id.lib, ca->dof_ob);
- ca->id.flag -= LIB_NEED_LINK;
+ ca->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -3314,7 +3314,7 @@ static void lib_link_lamp(FileData *fd, Main *main)
int a;
for (la = main->lamp.first; la; la = la->id.next) {
- if (la->id.flag & LIB_NEED_LINK) {
+ if (la->id.tag & LIB_TAG_NEED_LINK) {
lib_link_animdata(fd, &la->id, la->adt);
for (a = 0; a < MAX_MTEX; a++) {
@@ -3332,7 +3332,7 @@ static void lib_link_lamp(FileData *fd, Main *main)
la->nodetree->id.lib = la->id.lib;
}
- la->id.flag -= LIB_NEED_LINK;
+ la->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -3383,15 +3383,15 @@ static void lib_link_key(FileData *fd, Main *main)
blo_do_versions_key_uidgen(key);
}
- BLI_assert((key->id.flag & LIB_EXTERN) == 0);
+ BLI_assert((key->id.tag & LIB_TAG_EXTERN) == 0);
- if (key->id.flag & LIB_NEED_LINK) {
+ if (key->id.tag & LIB_TAG_NEED_LINK) {
lib_link_animdata(fd, &key->id, key->adt);
key->ipo = newlibadr_us(fd, key->id.lib, key->ipo); // XXX deprecated - old animation system
key->from = newlibadr(fd, key->id.lib, key->from);
- key->id.flag -= LIB_NEED_LINK;
+ key->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -3452,7 +3452,7 @@ static void lib_link_mball(FileData *fd, Main *main)
int a;
for (mb = main->mball.first; mb; mb = mb->id.next) {
- if (mb->id.flag & LIB_NEED_LINK) {
+ if (mb->id.tag & LIB_TAG_NEED_LINK) {
lib_link_animdata(fd, &mb->id, mb->adt);
for (a = 0; a < mb->totcol; a++)
@@ -3460,7 +3460,7 @@ static void lib_link_mball(FileData *fd, Main *main)
mb->ipo = newlibadr_us(fd, mb->id.lib, mb->ipo); // XXX deprecated - old animation system
- mb->id.flag -= LIB_NEED_LINK;
+ mb->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -3490,7 +3490,7 @@ static void lib_link_world(FileData *fd, Main *main)
int a;
for (wrld = main->world.first; wrld; wrld = wrld->id.next) {
- if (wrld->id.flag & LIB_NEED_LINK) {
+ if (wrld->id.tag & LIB_TAG_NEED_LINK) {
lib_link_animdata(fd, &wrld->id, wrld->adt);
wrld->ipo = newlibadr_us(fd, wrld->id.lib, wrld->ipo); // XXX deprecated - old animation system
@@ -3508,7 +3508,7 @@ static void lib_link_world(FileData *fd, Main *main)
wrld->nodetree->id.lib = wrld->id.lib;
}
- wrld->id.flag -= LIB_NEED_LINK;
+ wrld->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -3542,8 +3542,8 @@ static void lib_link_vfont(FileData *UNUSED(fd), Main *main)
VFont *vf;
for (vf = main->vfont.first; vf; vf = vf->id.next) {
- if (vf->id.flag & LIB_NEED_LINK) {
- vf->id.flag -= LIB_NEED_LINK;
+ if (vf->id.tag & LIB_TAG_NEED_LINK) {
+ vf->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -3562,8 +3562,8 @@ static void lib_link_text(FileData *UNUSED(fd), Main *main)
Text *text;
for (text = main->text.first; text; text = text->id.next) {
- if (text->id.flag & LIB_NEED_LINK) {
- text->id.flag -= LIB_NEED_LINK;
+ if (text->id.tag & LIB_TAG_NEED_LINK) {
+ text->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -3614,10 +3614,10 @@ static void lib_link_image(FileData *fd, Main *main)
Image *ima;
for (ima = main->image.first; ima; ima = ima->id.next) {
- if (ima->id.flag & LIB_NEED_LINK) {
+ if (ima->id.tag & LIB_TAG_NEED_LINK) {
IDP_LibLinkProperty(ima->id.properties, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
- ima->id.flag -= LIB_NEED_LINK;
+ ima->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -3682,7 +3682,7 @@ static void lib_link_curve(FileData *fd, Main *main)
int a;
for (cu = main->curve.first; cu; cu = cu->id.next) {
- if (cu->id.flag & LIB_NEED_LINK) {
+ if (cu->id.tag & LIB_TAG_NEED_LINK) {
lib_link_animdata(fd, &cu->id, cu->adt);
for (a = 0; a < cu->totcol; a++)
@@ -3699,7 +3699,7 @@ static void lib_link_curve(FileData *fd, Main *main)
cu->ipo = newlibadr_us(fd, cu->id.lib, cu->ipo); // XXX deprecated - old animation system
cu->key = newlibadr_us(fd, cu->id.lib, cu->key);
- cu->id.flag -= LIB_NEED_LINK;
+ cu->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -3774,7 +3774,7 @@ static void lib_link_texture(FileData *fd, Main *main)
Tex *tex;
for (tex = main->tex.first; tex; tex = tex->id.next) {
- if (tex->id.flag & LIB_NEED_LINK) {
+ if (tex->id.tag & LIB_TAG_NEED_LINK) {
lib_link_animdata(fd, &tex->id, tex->adt);
tex->ima = newlibadr_us(fd, tex->id.lib, tex->ima);
@@ -3793,7 +3793,7 @@ static void lib_link_texture(FileData *fd, Main *main)
tex->nodetree->id.lib = tex->id.lib;
}
- tex->id.flag -= LIB_NEED_LINK;
+ tex->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -3854,7 +3854,7 @@ static void lib_link_material(FileData *fd, Main *main)
int a;
for (ma = main->mat.first; ma; ma = ma->id.next) {
- if (ma->id.flag & LIB_NEED_LINK) {
+ if (ma->id.tag & LIB_TAG_NEED_LINK) {
lib_link_animdata(fd, &ma->id, ma->adt);
/* Link ID Properties -- and copy this comment EXACTLY for easy finding
@@ -3877,7 +3877,7 @@ static void lib_link_material(FileData *fd, Main *main)
ma->nodetree->id.lib = ma->id.lib;
}
- ma->id.flag -= LIB_NEED_LINK;
+ ma->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -4002,7 +4002,7 @@ static void lib_link_particlesettings(FileData *fd, Main *main)
int a;
for (part = main->particle.first; part; part = part->id.next) {
- if (part->id.flag & LIB_NEED_LINK) {
+ if (part->id.tag & LIB_TAG_NEED_LINK) {
lib_link_animdata(fd, &part->id, part->adt);
part->ipo = newlibadr_us(fd, part->id.lib, part->ipo); // XXX deprecated - old animation system
@@ -4084,7 +4084,7 @@ static void lib_link_particlesettings(FileData *fd, Main *main)
}
}
- part->id.flag -= LIB_NEED_LINK;
+ part->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -4305,7 +4305,7 @@ static void lib_link_mesh(FileData *fd, Main *main)
Mesh *me;
for (me = main->mesh.first; me; me = me->id.next) {
- if (me->id.flag & LIB_NEED_LINK) {
+ if (me->id.tag & LIB_TAG_NEED_LINK) {
int i;
/* Link ID Properties -- and copy this comment EXACTLY for easy finding
@@ -4340,7 +4340,7 @@ static void lib_link_mesh(FileData *fd, Main *main)
convert_tface_mt(fd, main);
for (me = main->mesh.first; me; me = me->id.next) {
- if (me->id.flag & LIB_NEED_LINK) {
+ if (me->id.tag & LIB_TAG_NEED_LINK) {
/*check if we need to convert mfaces to mpolys*/
if (me->totface && !me->totpoly) {
/* temporarily switch main so that reading from
@@ -4369,7 +4369,7 @@ static void lib_link_mesh(FileData *fd, Main *main)
BKE_mesh_tessface_clear(me);
#endif
- me->id.flag -= LIB_NEED_LINK;
+ me->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -4586,13 +4586,13 @@ static void lib_link_latt(FileData *fd, Main *main)
Lattice *lt;
for (lt = main->latt.first; lt; lt = lt->id.next) {
- if (lt->id.flag & LIB_NEED_LINK) {
+ if (lt->id.tag & LIB_TAG_NEED_LINK) {
lib_link_animdata(fd, &lt->id, lt->adt);
lt->ipo = newlibadr_us(fd, lt->id.lib, lt->ipo); // XXX deprecated - old animation system
lt->key = newlibadr_us(fd, lt->id.lib, lt->key);
- lt->id.flag -= LIB_NEED_LINK;
+ lt->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -4639,7 +4639,7 @@ static void lib_link_object(FileData *fd, Main *main)
int warn=0, a;
for (ob = main->object.first; ob; ob = ob->id.next) {
- if (ob->id.flag & LIB_NEED_LINK) {
+ if (ob->id.tag & LIB_TAG_NEED_LINK) {
IDP_LibLinkProperty(ob->id.properties, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
lib_link_animdata(fd, &ob->id, ob->adt);
@@ -4716,7 +4716,7 @@ static void lib_link_object(FileData *fd, Main *main)
ob->gpd = newlibadr_us(fd, ob->id.lib, ob->gpd);
ob->duplilist = NULL;
- ob->id.flag -= LIB_NEED_LINK;
+ ob->id.tag &= ~LIB_TAG_NEED_LINK;
/* if id.us==0 a new base will be created later on */
/* WARNING! Also check expand_object(), should reflect the stuff below. */
@@ -5235,7 +5235,7 @@ static void direct_link_object(FileData *fd, Object *ob)
* Also when linking in a file don't allow edit and pose modes.
* See [#34776, #42780] for more information.
*/
- if (fd->memfile || (ob->id.flag & (LIB_EXTERN | LIB_INDIRECT))) {
+ if (fd->memfile || (ob->id.tag & (LIB_TAG_EXTERN | LIB_TAG_INDIRECT))) {
ob->mode &= ~(OB_MODE_EDIT | OB_MODE_PARTICLE_EDIT);
if (!fd->memfile) {
ob->mode &= ~OB_MODE_POSE;
@@ -5505,7 +5505,7 @@ static bool scene_validate_setscene__liblink(Scene *sce, const int totscene)
if (sce->set == NULL) return 1;
for (a = 0, sce_iter = sce; sce_iter->set; sce_iter = sce_iter->set, a++) {
- if (sce_iter->id.flag & LIB_NEED_LINK) {
+ if (sce_iter->id.tag & LIB_TAG_NEED_LINK) {
return 1;
}
@@ -5535,7 +5535,7 @@ static void lib_link_scene(FileData *fd, Main *main)
#endif
for (sce = main->scene.first; sce; sce = sce->id.next) {
- if (sce->id.flag & LIB_NEED_LINK) {
+ if (sce->id.tag & LIB_TAG_NEED_LINK) {
/* Link ID Properties -- and copy this comment EXACTLY for easy finding
* of library blocks that implement this.*/
IDP_LibLinkProperty(sce->id.properties, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
@@ -5684,10 +5684,10 @@ static void lib_link_scene(FileData *fd, Main *main)
}
else {
/* postpone un-setting the flag until we've checked the set-scene */
- sce->id.flag &= ~LIB_NEED_LINK;
+ sce->id.tag &= ~LIB_TAG_NEED_LINK;
}
#else
- sce->id.flag &= ~LIB_NEED_LINK;
+ sce->id.tag &= ~LIB_TAG_NEED_LINK;
#endif
}
@@ -5699,8 +5699,8 @@ static void lib_link_scene(FileData *fd, Main *main)
#ifdef USE_SETSCENE_CHECK
if (need_check_set) {
for (sce = main->scene.first; sce; sce = sce->id.next) {
- if (sce->id.flag & LIB_NEED_LINK) {
- sce->id.flag &= ~LIB_NEED_LINK;
+ if (sce->id.tag & LIB_TAG_NEED_LINK) {
+ sce->id.tag &= ~LIB_TAG_NEED_LINK;
if (!scene_validate_setscene__liblink(sce, totscene)) {
printf("Found cyclic background scene when linking %s\n", sce->id.name + 2);
}
@@ -6081,11 +6081,11 @@ static void lib_link_windowmanager(FileData *fd, Main *main)
wmWindow *win;
for (wm = main->wm.first; wm; wm = wm->id.next) {
- if (wm->id.flag & LIB_NEED_LINK) {
+ if (wm->id.tag & LIB_TAG_NEED_LINK) {
for (win = wm->windows.first; win; win = win->next)
win->screen = newlibadr(fd, NULL, win->screen);
- wm->id.flag -= LIB_NEED_LINK;
+ wm->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -6098,8 +6098,8 @@ static void lib_link_gpencil(FileData *fd, Main *main)
bGPdata *gpd;
for (gpd = main->gpencil.first; gpd; gpd = gpd->id.next) {
- if (gpd->id.flag & LIB_NEED_LINK) {
- gpd->id.flag -= LIB_NEED_LINK;
+ if (gpd->id.tag & LIB_TAG_NEED_LINK) {
+ gpd->id.tag &= ~LIB_TAG_NEED_LINK;
lib_link_animdata(fd, &gpd->id, gpd->adt);
}
@@ -6150,7 +6150,7 @@ static void lib_link_screen(FileData *fd, Main *main)
ScrArea *sa;
for (sc = main->screen.first; sc; sc = sc->id.next) {
- if (sc->id.flag & LIB_NEED_LINK) {
+ if (sc->id.tag & LIB_TAG_NEED_LINK) {
id_us_ensure_real(&sc->id);
sc->scene = newlibadr(fd, sc->id.lib, sc->scene);
@@ -6340,7 +6340,7 @@ static void lib_link_screen(FileData *fd, Main *main)
}
}
}
- sc->id.flag -= LIB_NEED_LINK;
+ sc->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -7184,11 +7184,11 @@ static void lib_link_speaker(FileData *fd, Main *main)
Speaker *spk;
for (spk = main->speaker.first; spk; spk = spk->id.next) {
- if (spk->id.flag & LIB_NEED_LINK) {
+ if (spk->id.tag & LIB_TAG_NEED_LINK) {
lib_link_animdata(fd, &spk->id, spk->adt);
spk->sound = newlibadr_us(fd, spk->id.lib, spk->sound);
- spk->id.flag -= LIB_NEED_LINK;
+ spk->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -7240,8 +7240,8 @@ static void lib_link_sound(FileData *fd, Main *main)
bSound *sound;
for (sound = main->sound.first; sound; sound = sound->id.next) {
- if (sound->id.flag & LIB_NEED_LINK) {
- sound->id.flag -= LIB_NEED_LINK;
+ if (sound->id.tag & LIB_TAG_NEED_LINK) {
+ sound->id.tag &= ~LIB_TAG_NEED_LINK;
sound->ipo = newlibadr_us(fd, sound->id.lib, sound->ipo); // XXX deprecated - old animation system
BKE_sound_load(main, sound);
@@ -7264,8 +7264,8 @@ static void lib_link_group(FileData *fd, Main *main)
bool add_us;
for (group = main->group.first; group; group = group->id.next) {
- if (group->id.flag & LIB_NEED_LINK) {
- group->id.flag -= LIB_NEED_LINK;
+ if (group->id.tag & LIB_TAG_NEED_LINK) {
+ group->id.tag &= ~LIB_TAG_NEED_LINK;
add_us = false;
@@ -7389,7 +7389,7 @@ static void lib_link_movieclip(FileData *fd, Main *main)
MovieClip *clip;
for (clip = main->movieclip.first; clip; clip = clip->id.next) {
- if (clip->id.flag & LIB_NEED_LINK) {
+ if (clip->id.tag & LIB_TAG_NEED_LINK) {
MovieTracking *tracking = &clip->tracking;
MovieTrackingObject *object;
@@ -7404,7 +7404,7 @@ static void lib_link_movieclip(FileData *fd, Main *main)
lib_link_movieTracks(fd, clip, &object->tracks);
}
- clip->id.flag -= LIB_NEED_LINK;
+ clip->id.tag &= ~LIB_TAG_NEED_LINK;
}
}
}
@@ -7468,7 +7468,7 @@ static void lib_link_mask(FileData *fd, Main *main)
mask = main->mask.first;
while (mask) {
- if (mask->id.flag & LIB_NEED_LINK) {
+ if (mask->id.tag & LIB_TAG_NEED_LINK) {
MaskLayer *masklay;
lib_link_animdata(fd, &mask->id, mask->adt);
@@ -7492,7 +7492,7 @@ static void lib_link_mask(FileData *fd, Main *main)
}
}
- mask->id.flag -= LIB_NEED_LINK;
+ mask->id.tag &= ~LIB_TAG_NEED_LINK;
}
mask = mask->id.next;
}
@@ -7509,8 +7509,8 @@ static void lib_link_linestyle(FileData *fd, Main *main)
linestyle = main->linestyle.first;
while (linestyle) {
- if (linestyle->id.flag & LIB_NEED_LINK) {
- linestyle->id.flag -= LIB_NEED_LINK;
+ if (linestyle->id.tag & LIB_TAG_NEED_LINK) {
+ linestyle->id.tag &= ~LIB_TAG_NEED_LINK;
IDP_LibLinkProperty(linestyle->id.properties, (fd->flags & FD_FLAGS_SWITCH_ENDIAN), fd);
lib_link_animdata(fd, &linestyle->id, linestyle->adt);
@@ -7921,12 +7921,10 @@ static BHead *read_libblock(FileData *fd, Main *main, BHead *bhead, int flag, ID
if (!id)
return blo_nextbhead(fd, bhead);
- /* clear first 8 bits */
- id->flag = (id->flag & 0xFF00) | flag | LIB_NEED_LINK;
+ id->tag = flag | LIB_TAG_NEED_LINK;
id->lib = main->curlib;
id->us = ID_FAKE_USERS(id);
id->icon_id = 0;
- id->flag &= ~(LIB_ID_RECALC | LIB_ID_RECALC_DATA | LIB_DOIT | LIB_MISSING);
/* this case cannot be direct_linked: it's just the ID part */
if (bhead->code == ID_ID) {
@@ -8371,7 +8369,7 @@ BlendFileData *blo_read_file_internal(FileData *fd, const char *filepath)
case ID_ID:
/* Always adds to the most recently loaded ID_LI block, see direct_link_library.
* This is part of the file format definition. */
- bhead = read_libblock(fd, mainlist.last, bhead, LIB_READ | LIB_EXTERN, NULL);
+ bhead = read_libblock(fd, mainlist.last, bhead, LIB_TAG_READ | LIB_TAG_EXTERN, NULL);
break;
/* in 2.50+ files, the file identifier for screens is patched, forward compatibility */
@@ -8379,7 +8377,7 @@ BlendFileData *blo_read_file_internal(FileData *fd, const char *filepath)
bhead->code = ID_SCR;
/* deliberate pass on to default */
default:
- bhead = read_libblock(fd, bfd->main, bhead, LIB_LOCAL, NULL);
+ bhead = read_libblock(fd, bfd->main, bhead, LIB_TAG_LOCAL, NULL);
}
}
@@ -8559,7 +8557,7 @@ static void expand_doit_library(void *fdhandle, Main *mainvar, void *old)
id = is_yet_read(fd, ptr, bhead);
if (id == NULL) {
- read_libblock(fd, ptr, bhead, LIB_READ+LIB_INDIRECT, NULL);
+ read_libblock(fd, ptr, bhead, LIB_TAG_READ | LIB_TAG_INDIRECT, NULL);
// commented because this can print way too much
// if (G.debug & G_DEBUG) printf("expand_doit: other lib %s\n", lib->name);
@@ -8577,10 +8575,10 @@ static void expand_doit_library(void *fdhandle, Main *mainvar, void *old)
/* Update: the issue is that in file reading, the oldnewmap is OK, but for existing data, it has to be
* inserted in the map to be found! */
- /* Update: previously it was checking for id->flag & LIB_PRE_EXISTING, however that does not affect file
- * reading. For file reading we may need to insert it into the libmap as well, because you might have
- * two files indirectly linking the same datablock, and in that case we need this in the libmap for the
- * fd of both those files.
+ /* Update: previously it was checking for id->tag & LIB_TAG_PRE_EXISTING, however that
+ * does not affect file reading. For file reading we may need to insert it into the libmap as well,
+ * because you might have two files indirectly linking the same datablock, and in that case
+ * we need this in the libmap for the fd of both those files.
*
* The crash that this check avoided earlier was because bhead->code wasn't properly passed in, making
* change_idid_adr not detect the mapping was for an ID_ID datablock. */
@@ -8597,7 +8595,7 @@ static void expand_doit_library(void *fdhandle, Main *mainvar, void *old)
else {
id = is_yet_read(fd, mainvar, bhead);
if (id == NULL) {
- read_libblock(fd, mainvar, bhead, LIB_TESTIND, NULL);
+ read_libblock(fd, mainvar, bhead, LIB_TAG_TESTIND, NULL);
}
else {
/* this is actually only needed on UI call? when ID was already read before, and another append
@@ -9397,7 +9395,7 @@ void BLO_main_expander(BLOExpandDoitCallback expand_doit_func)
/**
* Loop over all ID data in Main to mark relations.
- * Set (id->flag & LIB_NEED_EXPAND) to mark expanding. Flags get cleared after expanding.
+ * Set (id->tag & LIB_TAG_NEED_EXPAND) to mark expanding. Flags get cleared after expanding.
*
* \param fdhandle usually filedata, or own handle.
* \param mainvar the Main database to expand.
@@ -9417,7 +9415,7 @@ void BLO_expand_main(void *fdhandle, Main *mainvar)
while (a--) {
id = lbarray[a]->first;
while (id) {
- if (id->flag & LIB_NEED_EXPAND) {
+ if (id->tag & LIB_TAG_NEED_EXPAND) {
switch (GS(id->name)) {
case ID_OB:
expand_object(fd, mainvar, (Object *)id);
@@ -9497,7 +9495,7 @@ void BLO_expand_main(void *fdhandle, Main *mainvar)
}
do_it = true;
- id->flag -= LIB_NEED_EXPAND;
+ id->tag &= ~LIB_TAG_NEED_EXPAND;
}
id = id->next;
@@ -9531,9 +9529,9 @@ static void give_base_to_objects(Main *mainvar, Scene *scene, View3D *v3d, Libra
BLI_assert(scene);
- /* give all objects which are LIB_INDIRECT a base, or for a group when *lib has been set */
+ /* give all objects which are LIB_TAG_INDIRECT a base, or for a group when *lib has been set */
for (ob = mainvar->object.first; ob; ob = ob->id.next) {
- if ((ob->id.flag & LIB_INDIRECT) && (ob->id.flag & LIB_PRE_EXISTING) == 0) {
+ if ((ob->id.tag & LIB_TAG_INDIRECT) && (ob->id.tag & LIB_TAG_PRE_EXISTING) == 0) {
bool do_it = false;
if (ob->id.us == 0) {
@@ -9560,8 +9558,8 @@ static void give_base_to_objects(Main *mainvar, Scene *scene, View3D *v3d, Libra
CLAMP_MIN(ob->id.us, 0);
ob->id.us += 1;
- ob->id.flag &= ~LIB_INDIRECT;
- ob->id.flag |= LIB_EXTERN;
+ ob->id.tag &= ~LIB_TAG_INDIRECT;
+ ob->id.tag |= LIB_TAG_EXTERN;
}
}
}
@@ -9577,9 +9575,9 @@ static void give_base_to_groups(
/* give all objects which are tagged a base */
for (group = mainvar->group.first; group; group = group->id.next) {
- if (group->id.flag & LIB_DOIT) {
+ if (group->id.tag & LIB_TAG_DOIT) {
/* any indirect group should not have been tagged */
- BLI_assert((group->id.flag & LIB_INDIRECT) == 0);
+ BLI_assert((group->id.tag & LIB_TAG_INDIRECT) == 0);
/* BKE_object_add(...) messes with the selection */
ob = BKE_object_add_only_object(mainvar, OB_EMPTY, group->id.name + 2);
@@ -9610,7 +9608,7 @@ static ID *create_placeholder(Main *mainvar, const char *idname, const short fla
memcpy(ph_id->name, idname, sizeof(ph_id->name));
BKE_libblock_init_empty(ph_id);
ph_id->lib = mainvar->curlib;
- ph_id->flag = flag | LIB_MISSING;
+ ph_id->tag = flag | LIB_TAG_MISSING;
ph_id->us = ID_FAKE_USERS(ph_id);
ph_id->icon_id = 0;
@@ -9633,7 +9631,7 @@ static ID *link_named_part(Main *mainl, FileData *fd, const short idcode, const
id = is_yet_read(fd, mainl, bhead);
if (id == NULL) {
/* not read yet */
- read_libblock(fd, mainl, bhead, LIB_TESTEXT, &id);
+ read_libblock(fd, mainl, bhead, LIB_TAG_TESTEXT, &id);
if (id) {
/* sort by name in list */
@@ -9646,9 +9644,9 @@ static ID *link_named_part(Main *mainl, FileData *fd, const short idcode, const
if (G.debug)
printf("append: already linked\n");
oldnewmap_insert(fd->libmap, bhead->old, id, bhead->code);
- if (id->flag & LIB_INDIRECT) {
- id->flag -= LIB_INDIRECT;
- id->flag |= LIB_EXTERN;
+ if (id->tag & LIB_TAG_INDIRECT) {
+ id->tag &= ~LIB_TAG_INDIRECT;
+ id->tag |= LIB_TAG_EXTERN;
}
}
}
@@ -9675,7 +9673,7 @@ void BLO_library_link_all(Main *mainl, BlendHandle *bh)
if (bhead->code == ENDB)
break;
if (bhead->code == ID_OB)
- read_libblock(fd, mainl, bhead, LIB_TESTIND, &id);
+ read_libblock(fd, mainl, bhead, LIB_TAG_TESTIND, &id);
if (id) {
/* sort by name in list */
@@ -9722,7 +9720,7 @@ static ID *link_named_part_ex(
else if (id && (GS(id->name) == ID_GR)) {
/* tag as needing to be instantiated */
if (flag & FILE_GROUP_INSTANCE)
- id->flag |= LIB_DOIT;
+ id->tag |= LIB_TAG_DOIT;
}
return id;
@@ -9768,13 +9766,13 @@ ID *BLO_library_link_named_part_ex(
static void link_id_part(ReportList *reports, FileData *fd, Main *mainvar, ID *id, ID **r_id)
{
BHead *bhead = NULL;
- const bool is_valid = BKE_idcode_is_linkable(GS(id->name)) || ((id->flag & LIB_EXTERN) == 0);
+ const bool is_valid = BKE_idcode_is_linkable(GS(id->name)) || ((id->tag & LIB_TAG_EXTERN) == 0);
if (fd) {
bhead = find_bhead_from_idname(fd, id->name);
}
- id->flag &= ~LIB_READ;
+ id->tag &= ~LIB_TAG_READ;
if (!is_valid) {
blo_reportf_wrap(
@@ -9787,9 +9785,9 @@ static void link_id_part(ReportList *reports, FileData *fd, Main *mainvar, ID *i
}
if (bhead) {
- id->flag |= LIB_NEED_EXPAND;
+ id->tag |= LIB_TAG_NEED_EXPAND;
// printf("read lib block %s\n", id->name);
- read_libblock(fd, mainvar, bhead, id->flag, r_id);
+ read_libblock(fd, mainvar, bhead, id->tag, r_id);
}
else {
blo_reportf_wrap(
@@ -9802,7 +9800,7 @@ static void link_id_part(ReportList *reports, FileData *fd, Main *mainvar, ID *i
/* Generate a placeholder for this ID (simplified version of read_libblock actually...). */
if (r_id) {
- *r_id = is_valid ? create_placeholder(mainvar, id->name, id->flag) : NULL;
+ *r_id = is_valid ? create_placeholder(mainvar, id->name, id->tag) : NULL;
}
}
}
@@ -9942,7 +9940,7 @@ static int mainvar_count_libread_blocks(Main *mainvar)
ID *id;
for (id = lbarray[a]->first; id; id = id->next) {
- if (id->flag & LIB_READ)
+ if (id->tag & LIB_TAG_READ)
tot++;
}
}
@@ -9968,7 +9966,7 @@ static void read_libraries(FileData *basefd, ListBase *mainlist)
while (mainptr) {
int tot = mainvar_count_libread_blocks(mainptr);
- // printf("found LIB_READ %s\n", mainptr->curlib->name);
+ // printf("found LIB_TAG_READ %s\n", mainptr->curlib->name);
if (tot) {
FileData *fd = mainptr->curlib->filedata;
@@ -10049,7 +10047,7 @@ static void read_libraries(FileData *basefd, ListBase *mainlist)
}
else {
mainptr->curlib->filedata = NULL;
- mainptr->curlib->id.flag |= LIB_MISSING;
+ mainptr->curlib->id.tag |= LIB_TAG_MISSING;
}
if (fd == NULL) {
@@ -10066,7 +10064,7 @@ static void read_libraries(FileData *basefd, ListBase *mainlist)
while (id) {
ID *idn = id->next;
- if (id->flag & LIB_READ) {
+ if (id->tag & LIB_TAG_READ) {
ID *realid = NULL;
BLI_remlink(lbarray[a], id);
@@ -10099,7 +10097,7 @@ static void read_libraries(FileData *basefd, ListBase *mainlist)
for (id = lbarray[a]->first; id; id = idn) {
idn = id->next;
- if (id->flag & LIB_READ) {
+ if (id->tag & LIB_TAG_READ) {
BLI_assert(0);
BLI_remlink(lbarray[a], id);
blo_reportf_wrap(
diff --git a/source/blender/blenloader/intern/versioning_270.c b/source/blender/blenloader/intern/versioning_270.c
index 816eb879015..b975a39a301 100644
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@ -55,6 +55,7 @@
#include "DNA_genfile.h"
#include "BKE_colortools.h"
+#include "BKE_library.h"
#include "BKE_main.h"
#include "BKE_modifier.h"
#include "BKE_node.h"
@@ -1036,4 +1037,17 @@ void blo_do_versions_270(FileData *fd, Library *UNUSED(lib), Main *main)
}
}
}
+ if (!MAIN_VERSION_ATLEAST(main, 276, 5)) {
+ ListBase *lbarray[MAX_LIBARRAY];
+ int a;
+
+ /* Important to clear all non-persistent flags from older versions here, otherwise they could collide
+ * with any new persistent flag we may add in the future. */
+ a = set_listbasepointers(main, lbarray);
+ while (a--) {
+ for (ID *id = lbarray[a]->first; id; id = id->next) {
+ id->flag &= LIB_FAKEUSER;
+ }
+ }
+ }
}
diff --git a/source/blender/blenloader/intern/versioning_legacy.c b/source/blender/blenloader/intern/versioning_legacy.c
index 635df922c11..ac7b7b11b61 100644
--- a/source/blender/blenloader/intern/versioning_legacy.c
+++ b/source/blender/blenloader/intern/versioning_legacy.c
@@ -589,7 +589,7 @@ void blo_do_versions_pre250(FileData *fd, Library *lib, Main *main)
/* tex->extend and tex->imageflag have changed: */
Tex *tex = main->tex.first;
while (tex) {
- if (tex->id.flag & LIB_NEED_LINK) {
+ if (tex->id.tag & LIB_TAG_NEED_LINK) {
if (tex->extend == 0) {
if (tex->xrepeat || tex->yrepeat) {
@@ -3043,7 +3043,7 @@ void blo_do_versions_pre250(FileData *fd, Library *lib, Main *main)
part->id.lib = ob->id.lib;
part->id.us--;
- part->id.flag |= (ob->id.flag & LIB_NEED_LINK);
+ part->id.tag |= (ob->id.tag & LIB_TAG_NEED_LINK);
psys->totpart = 0;
psys->flag = PSYS_CURRENT;
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 4643d2e5642..a2802db0802 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -2897,7 +2897,7 @@ static void write_libraries(WriteData *wd, Main *main)
found_one = false;
while (tot--) {
for (id= lbarray[tot]->first; id; id= id->next) {
- if (id->us>0 && (id->flag & LIB_EXTERN)) {
+ if (id->us > 0 && (id->tag & LIB_TAG_EXTERN)) {
found_one = true;
break;
}
@@ -2922,7 +2922,7 @@ static void write_libraries(WriteData *wd, Main *main)
while (a--) {
for (id= lbarray[a]->first; id; id= id->next) {
- if (id->us>0 && (id->flag & LIB_EXTERN)) {
+ if (id->us > 0 && (id->tag & LIB_TAG_EXTERN)) {
if (!BKE_idcode_is_linkable(GS(id->name))) {
printf("ERROR: write file: datablock '%s' from lib '%s' is not linkable "
"but is flagged as directly linked", id->name, main->curlib->filepath);
diff --git a/source/blender/collada/SceneExporter.cpp b/source/blender/collada/SceneExporter.cpp
index ac8ac2b9867..30cd6ddf197 100644
--- a/source/blender/collada/SceneExporter.cpp
+++ b/source/blender/collada/SceneExporter.cpp
@@ -61,7 +61,7 @@ void SceneExporter::exportHierarchy(Scene *sce)
// Ensure all objects in the export_set are marked
for (node = this->export_settings->export_set; node; node = node->next) {
Object *ob = (Object *) node->link;
- ob->id.flag |= LIB_DOIT;
+ ob->id.tag |= LIB_TAG_DOIT;
}
// Now find all exportable base ojects (highest in export hierarchy)
diff --git a/source/blender/collada/collada_utils.cpp b/source/blender/collada/collada_utils.cpp
index e71078a0bae..efdfaadd3e2 100644
--- a/source/blender/collada/collada_utils.cpp
+++ b/source/blender/collada/collada_utils.cpp
@@ -198,7 +198,7 @@ Object *bc_get_assigned_armature(Object *ob)
// returns NULL if no ancestor is selected
// IMPORTANT: This function expects that
// all exported objects have set:
-// ob->id.flag & LIB_DOIT
+// ob->id.tag & LIB_TAG_DOIT
Object *bc_get_highest_selected_ancestor_or_self(LinkNode *export_set, Object *ob)
{
Object *ancestor = ob;
@@ -237,17 +237,17 @@ bool bc_has_object_type(LinkNode *export_set, short obtype)
int bc_is_marked(Object *ob)
{
- return ob && (ob->id.flag & LIB_DOIT);
+ return ob && (ob->id.tag & LIB_TAG_DOIT);
}
void bc_remove_mark(Object *ob)
{
- ob->id.flag &= ~LIB_DOIT;
+ ob->id.tag &= ~LIB_TAG_DOIT;
}
void bc_set_mark(Object *ob)
{
- ob->id.flag |= LIB_DOIT;
+ ob->id.tag |= LIB_TAG_DOIT;
}
// Use bubble sort algorithm for sorting the export set
diff --git a/source/blender/depsgraph/intern/depsgraph.cc b/source/blender/depsgraph/intern/depsgraph.cc
index dedb6e322ba..18c7c5bd8e1 100644
--- a/source/blender/depsgraph/intern/depsgraph.cc
+++ b/source/blender/depsgraph/intern/depsgraph.cc
@@ -317,7 +317,7 @@ IDDepsNode *Depsgraph::add_id_node(ID *id, const string &name)
if (!id_node) {
DepsNodeFactory *factory = DEG_get_node_factory(DEPSNODE_TYPE_ID_REF);
id_node = (IDDepsNode *)factory->create_node(id, "", name);
- id->flag |= LIB_DOIT;
+ id->tag |= LIB_TAG_DOIT;
/* register */
this->id_hash[id] = id_node;
}
diff --git a/source/blender/depsgraph/intern/depsgraph_build.cc b/source/blender/depsgraph/intern/depsgraph_build.cc
index 7a2ee2c416a..a62b23bde68 100644
--- a/source/blender/depsgraph/intern/depsgraph_build.cc
+++ b/source/blender/depsgraph/intern/depsgraph_build.cc
@@ -206,7 +206,7 @@ static void deg_graph_build_finalize(Depsgraph *graph)
stack.push(node);
}
IDDepsNode *id_node = node->owner->owner;
- id_node->id->flag |= LIB_DOIT;
+ id_node->id->tag |= LIB_TAG_DOIT;
}
while (!stack.empty()) {
@@ -249,11 +249,11 @@ static void deg_graph_build_finalize(Depsgraph *graph)
* update tag.
*/
ID *id = id_node->id;
- if (id->flag & LIB_ID_RECALC_ALL &&
- id->flag & LIB_DOIT)
+ if (id->tag & LIB_TAG_ID_RECALC_ALL &&
+ id->tag & LIB_TAG_DOIT)
{
id_node->tag_update(graph);
- id->flag &= ~LIB_DOIT;
+ id->tag &= ~LIB_TAG_DOIT;
}
}
}
diff --git a/source/blender/depsgraph/intern/depsgraph_build_nodes.cc b/source/blender/depsgraph/intern/depsgraph_build_nodes.cc
index 47aa14c7637..87af9c8aceb 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_nodes.cc
+++ b/source/blender/depsgraph/intern/depsgraph_build_nodes.cc
@@ -242,7 +242,7 @@ OperationDepsNode *DepsgraphNodeBuilder::find_operation_node(
void DepsgraphNodeBuilder::build_scene(Main *bmain, Scene *scene)
{
- /* LIB_DOIT is used to indicate whether node for given ID was already
+ /* LIB_TAG_DOIT is used to indicate whether node for given ID was already
* created or not. This flag is being set in add_id_node(), so functions
* shouldn't bother with setting it, they only might query this flag when
* needed.
@@ -315,10 +315,10 @@ void DepsgraphNodeBuilder::build_group(Scene *scene,
Group *group)
{
ID *group_id = &group->id;
- if (group_id->flag & LIB_DOIT) {
+ if (group_id->tag & LIB_TAG_DOIT) {
return;
}
- group_id->flag |= LIB_DOIT;
+ group_id->tag |= LIB_TAG_DOIT;
for (GroupObject *go = (GroupObject *)group->gobject.first;
go != NULL;
@@ -365,7 +365,7 @@ SubgraphDepsNode *DepsgraphNodeBuilder::build_subgraph(Group *group)
void DepsgraphNodeBuilder::build_object(Scene *scene, Base *base, Object *ob)
{
- if (ob->id.flag & LIB_DOIT) {
+ if (ob->id.tag & LIB_TAG_DOIT) {
IDDepsNode *id_node = m_graph->find_id_node(&ob->id);
id_node->layers = base->lay;
return;
@@ -430,7 +430,7 @@ void DepsgraphNodeBuilder::build_object(Scene *scene, Base *base, Object *ob)
default:
{
ID *obdata = (ID *)ob->data;
- if ((obdata->flag & LIB_DOIT) == 0) {
+ if ((obdata->tag & LIB_TAG_DOIT) == 0) {
build_animdata(obdata);
}
break;
@@ -598,7 +598,7 @@ OperationDepsNode *DepsgraphNodeBuilder::build_driver(ID *id, FCurve *fcu)
void DepsgraphNodeBuilder::build_world(World *world)
{
ID *world_id = &world->id;
- if (world_id->flag & LIB_DOIT) {
+ if (world_id->tag & LIB_TAG_DOIT) {
return;
}
@@ -961,7 +961,7 @@ void DepsgraphNodeBuilder::build_obdata_geom(Scene *scene, Object *ob)
// add geometry collider relations
}
- if (obdata->flag & LIB_DOIT) {
+ if (obdata->tag & LIB_TAG_DOIT) {
return;
}
@@ -1045,7 +1045,7 @@ void DepsgraphNodeBuilder::build_camera(Object *ob)
/* TODO: Link scene-camera links in somehow... */
Camera *cam = (Camera *)ob->data;
ID *camera_id = &cam->id;
- if (camera_id->flag & LIB_DOIT) {
+ if (camera_id->tag & LIB_TAG_DOIT) {
return;
}
@@ -1068,7 +1068,7 @@ void DepsgraphNodeBuilder::build_lamp(Object *ob)
{
Lamp *la = (Lamp *)ob->data;
ID *lamp_id = &la->id;
- if (lamp_id->flag & LIB_DOIT) {
+ if (lamp_id->tag & LIB_TAG_DOIT) {
return;
}
@@ -1115,7 +1115,7 @@ void DepsgraphNodeBuilder::build_nodetree(DepsNode *owner_node, bNodeTree *ntree
}
else if (bnode->type == NODE_GROUP) {
bNodeTree *group_ntree = (bNodeTree *)bnode->id;
- if ((group_ntree->id.flag & LIB_DOIT) == 0) {
+ if ((group_ntree->id.tag & LIB_TAG_DOIT) == 0) {
build_nodetree(owner_node, group_ntree);
}
}
@@ -1129,7 +1129,7 @@ void DepsgraphNodeBuilder::build_nodetree(DepsNode *owner_node, bNodeTree *ntree
void DepsgraphNodeBuilder::build_material(DepsNode *owner_node, Material *ma)
{
ID *ma_id = &ma->id;
- if (ma_id->flag & LIB_DOIT) {
+ if (ma_id->tag & LIB_TAG_DOIT) {
return;
}
@@ -1167,10 +1167,10 @@ void DepsgraphNodeBuilder::build_texture_stack(DepsNode *owner_node, MTex **text
void DepsgraphNodeBuilder::build_texture(DepsNode *owner_node, Tex *tex)
{
ID *tex_id = &tex->id;
- if (tex_id->flag & LIB_DOIT) {
+ if (tex_id->tag & LIB_TAG_DOIT) {
return;
}
- tex_id->flag |= LIB_DOIT;
+ tex_id->tag |= LIB_TAG_DOIT;
/* texture itself */
build_animdata(tex_id);
/* texture's nodetree */
diff --git a/source/blender/depsgraph/intern/depsgraph_build_relations.cc b/source/blender/depsgraph/intern/depsgraph_build_relations.cc
index 2a0dd6f9439..b0eed963aba 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_relations.cc
+++ b/source/blender/depsgraph/intern/depsgraph_build_relations.cc
@@ -240,7 +240,7 @@ void DepsgraphRelationBuilder::add_operation_relation(
void DepsgraphRelationBuilder::build_scene(Main *bmain, Scene *scene)
{
- /* LIB_DOIT is used to indicate whether node for given ID was already
+ /* LIB_TAG_DOIT is used to indicate whether node for given ID was already
* created or not.
*/
BKE_main_id_tag_all(bmain, false);
@@ -305,7 +305,7 @@ void DepsgraphRelationBuilder::build_group(Main *bmain,
Group *group)
{
ID *group_id = &group->id;
- bool group_done = (group_id->flag & LIB_DOIT) != 0;
+ bool group_done = (group_id->tag & LIB_TAG_DOIT) != 0;
OperationKey object_local_transform_key(&object->id,
DEPSNODE_TYPE_TRANSFORM,
DEG_OPCODE_TRANSFORM_LOCAL);
@@ -322,12 +322,12 @@ void DepsgraphRelationBuilder::build_group(Main *bmain,
DEPSREL_TYPE_TRANSFORM,
"Dupligroup");
}
- group_id->flag |= LIB_DOIT;
+ group_id->tag |= LIB_TAG_DOIT;
}
void DepsgraphRelationBuilder::build_object(Main *bmain, Scene *scene, Object *ob)
{
- if (ob->id.flag & LIB_DOIT) {
+ if (ob->id.tag & LIB_TAG_DOIT) {
return;
}
@@ -910,10 +910,10 @@ void DepsgraphRelationBuilder::build_driver(ID *id, FCurve *fcu)
void DepsgraphRelationBuilder::build_world(World *world)
{
ID *world_id = &world->id;
- if (world_id->flag & LIB_DOIT) {
+ if (world_id->tag & LIB_TAG_DOIT) {
return;
}
- world_id->flag |= LIB_DOIT;
+ world_id->tag |= LIB_TAG_DOIT;
build_animdata(world_id);
@@ -1631,10 +1631,10 @@ void DepsgraphRelationBuilder::build_obdata_geom(Main *bmain, Scene *scene, Obje
}
}
- if (obdata->flag & LIB_DOIT) {
+ if (obdata->tag & LIB_TAG_DOIT) {
return;
}
- obdata->flag |= LIB_DOIT;
+ obdata->tag |= LIB_TAG_DOIT;
/* Link object data evaluation node to exit operation. */
OperationKey obdata_geom_eval_key(obdata, DEPSNODE_TYPE_GEOMETRY, DEG_OPCODE_PLACEHOLDER, "Geometry Eval");
@@ -1718,10 +1718,10 @@ void DepsgraphRelationBuilder::build_camera(Object *ob)
{
Camera *cam = (Camera *)ob->data;
ID *camera_id = &cam->id;
- if (camera_id->flag & LIB_DOIT) {
+ if (camera_id->tag & LIB_TAG_DOIT) {
return;
}
- camera_id->flag |= LIB_DOIT;
+ camera_id->tag |= LIB_TAG_DOIT;
ComponentKey parameters_key(camera_id, DEPSNODE_TYPE_PARAMETERS);
@@ -1744,10 +1744,10 @@ void DepsgraphRelationBuilder::build_lamp(Object *ob)
{
Lamp *la = (Lamp *)ob->data;
ID *lamp_id = &la->id;
- if (lamp_id->flag & LIB_DOIT) {
+ if (lamp_id->tag & LIB_TAG_DOIT) {
return;
}
- lamp_id->flag |= LIB_DOIT;
+ lamp_id->tag |= LIB_TAG_DOIT;
ComponentKey parameters_key(lamp_id, DEPSNODE_TYPE_PARAMETERS);
@@ -1794,9 +1794,9 @@ void DepsgraphRelationBuilder::build_nodetree(ID *owner, bNodeTree *ntree)
}
else if (bnode->type == NODE_GROUP) {
bNodeTree *group_ntree = (bNodeTree *)bnode->id;
- if ((group_ntree->id.flag & LIB_DOIT) == 0) {
+ if ((group_ntree->id.tag & LIB_TAG_DOIT) == 0) {
build_nodetree(owner, group_ntree);
- group_ntree->id.flag |= LIB_DOIT;
+ group_ntree->id.tag |= LIB_TAG_DOIT;
}
OperationKey group_parameters_key(&group_ntree->id,
DEPSNODE_TYPE_PARAMETERS,
@@ -1821,10 +1821,10 @@ void DepsgraphRelationBuilder::build_nodetree(ID *owner, bNodeTree *ntree)
void DepsgraphRelationBuilder::build_material(ID *owner, Material *ma)
{
ID *ma_id = &ma->id;
- if (ma_id->flag & LIB_DOIT) {
+ if (ma_id->tag & LIB_TAG_DOIT) {
return;
}
- ma_id->flag |= LIB_DOIT;
+ ma_id->tag |= LIB_TAG_DOIT;
/* animation */
build_animdata(ma_id);
@@ -1840,10 +1840,10 @@ void DepsgraphRelationBuilder::build_material(ID *owner, Material *ma)
void DepsgraphRelationBuilder::build_texture(ID *owner, Tex *tex)
{
ID *tex_id = &tex->id;
- if (tex_id->flag & LIB_DOIT) {
+ if (tex_id->tag & LIB_TAG_DOIT) {
return;
}
- tex_id->flag |= LIB_DOIT;
+ tex_id->tag |= LIB_TAG_DOIT;
/* texture itself */
build_animdata(tex_id);
diff --git a/source/blender/depsgraph/intern/depsgraph_tag.cc b/source/blender/depsgraph/intern/depsgraph_tag.cc
index a635cb670c7..42399cce3a5 100644
--- a/source/blender/depsgraph/intern/depsgraph_tag.cc
+++ b/source/blender/depsgraph/intern/depsgraph_tag.cc
@@ -76,13 +76,13 @@ namespace {
void lib_id_recalc_tag(Main *bmain, ID *id)
{
- id->flag |= LIB_ID_RECALC;
+ id->tag |= LIB_TAG_ID_RECALC;
DEG_id_type_tag(bmain, GS(id->name));
}
void lib_id_recalc_data_tag(Main *bmain, ID *id)
{
- id->flag |= LIB_ID_RECALC_DATA;
+ id->tag |= LIB_TAG_ID_RECALC_DATA;
DEG_id_type_tag(bmain, GS(id->name));
}
@@ -412,16 +412,16 @@ void DEG_graph_on_visible_update(Main *bmain, Scene *scene)
wmWindowManager *wm = (wmWindowManager *)bmain->wm.first;
int old_layers = graph->layers;
if (wm != NULL) {
- BKE_main_id_flag_listbase(&bmain->scene, LIB_DOIT, true);
+ BKE_main_id_flag_listbase(&bmain->scene, LIB_TAG_DOIT, true);
graph->layers = 0;
for (wmWindow *win = (wmWindow *)wm->windows.first;
win != NULL;
win = (wmWindow *)win->next)
{
Scene *scene = win->screen->scene;
- if (scene->id.flag & LIB_DOIT) {
+ if (scene->id.tag & LIB_TAG_DOIT) {
graph->layers |= BKE_screen_visible_layers(win->screen, scene);
- scene->id.flag &= ~LIB_DOIT;
+ scene->id.tag &= ~LIB_TAG_DOIT;
}
}
}
@@ -443,7 +443,7 @@ void DEG_graph_on_visible_update(Main *bmain, Scene *scene)
OperationDepsNode *node = *it;
IDDepsNode *id_node = node->owner->owner;
ID *id = id_node->id;
- if ((id->flag & LIB_ID_RECALC_ALL) != 0 ||
+ if ((id->tag & LIB_TAG_ID_RECALC_ALL) != 0 ||
(id_node->layers & scene->lay_updated) == 0)
{
id_node->tag_update(graph);
@@ -455,7 +455,7 @@ void DEG_graph_on_visible_update(Main *bmain, Scene *scene)
*/
if (GS(id->name) == ID_OB) {
Object *object = (Object *)id;
- if ((id->flag & LIB_ID_RECALC_ALL) == 0 &&
+ if ((id->tag & LIB_TAG_ID_RECALC_ALL) == 0 &&
(object->recalc & OB_RECALC_ALL) != 0)
{
id_node->tag_update(graph);
@@ -531,12 +531,12 @@ void DEG_ids_clear_recalc(Main *bmain)
*/
if (id && bmain->id_tag_update[(unsigned char)id->name[0]]) {
for (; id; id = (ID *)id->next) {
- id->flag &= ~(LIB_ID_RECALC | LIB_ID_RECALC_DATA);
+ id->tag &= ~(LIB_TAG_ID_RECALC | LIB_TAG_ID_RECALC_DATA);
/* Some ID's contain semi-datablock nodetree */
ntree = ntreeFromID(id);
if (ntree != NULL) {
- ntree->id.flag &= ~(LIB_ID_RECALC | LIB_ID_RECALC_DATA);
+ ntree->id.tag &= ~(LIB_TAG_ID_RECALC | LIB_TAG_ID_RECALC_DATA);
}
}
}
diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c
index 51b5a366861..2778a458ca0 100644
--- a/source/blender/editors/animation/anim_filter.c
+++ b/source/blender/editors/animation/anim_filter.c
@@ -1828,7 +1828,7 @@ static size_t animdata_filter_ds_linestyle(bAnimContext *ac, ListBase *anim_data
for (srl = sce->r.layers.first; srl; srl = srl->next) {
for (lineset = srl->freestyleConfig.linesets.first; lineset; lineset = lineset->next) {
if (lineset->linestyle) {
- lineset->linestyle->id.flag |= LIB_DOIT;
+ lineset->linestyle->id.tag |= LIB_TAG_DOIT;
}
}
}
@@ -1845,11 +1845,11 @@ static size_t animdata_filter_ds_linestyle(bAnimContext *ac, ListBase *anim_data
size_t tmp_items = 0;
if ((linestyle == NULL) ||
- !(linestyle->id.flag & LIB_DOIT))
+ !(linestyle->id.tag & LIB_TAG_DOIT))
{
continue;
}
- linestyle->id.flag &= ~LIB_DOIT;
+ linestyle->id.tag &= ~LIB_TAG_DOIT;
/* add scene-level animation channels */
BEGIN_ANIMFILTER_SUBCHANNELS(FILTER_LS_SCED(linestyle))
diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c
index 6ac657fa7a3..346c0879a78 100644
--- a/source/blender/editors/interface/interface_ops.c
+++ b/source/blender/editors/interface/interface_ops.c
@@ -358,7 +358,7 @@ bool UI_context_copy_to_selected_list(
Object *ob = link->ptr.id.data;
if (ob->data) {
ID *id_data = ob->data;
- id_data->flag |= LIB_DOIT;
+ id_data->tag |= LIB_TAG_DOIT;
}
}
@@ -368,7 +368,7 @@ bool UI_context_copy_to_selected_list(
link_next = link->next;
if ((id_data == NULL) ||
- (id_data->flag & LIB_DOIT) == 0 ||
+ (id_data->tag & LIB_TAG_DOIT) == 0 ||
(id_data->lib) ||
(GS(id_data->name) != id_code))
{
@@ -381,7 +381,7 @@ bool UI_context_copy_to_selected_list(
}
if (id_data) {
- id_data->flag &= ~LIB_DOIT;
+ id_data->tag &= ~LIB_TAG_DOIT;
}
}
}
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 09422a0ebd3..b53fa270898 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -436,7 +436,7 @@ static void template_ID(
if (user_alert) UI_but_flag_enable(but, UI_BUT_REDALERT);
if (id->lib) {
- if (id->flag & LIB_INDIRECT) {
+ if (id->tag & LIB_TAG_INDIRECT) {
but = uiDefIconBut(block, UI_BTYPE_BUT, 0, ICON_LIBRARY_DATA_INDIRECT, 0, 0, UI_UNIT_X, UI_UNIT_Y,
NULL, 0, 0, 0, 0, TIP_("Indirect library datablock, cannot change"));
UI_but_flag_enable(but, UI_BUT_DISABLED);
diff --git a/source/blender/editors/mesh/editmesh_utils.c b/source/blender/editors/mesh/editmesh_utils.c
index 656869f9dec..b9f20b6740f 100644
--- a/source/blender/editors/mesh/editmesh_utils.c
+++ b/source/blender/editors/mesh/editmesh_utils.c
@@ -113,7 +113,7 @@ void EDBM_redo_state_free(BMBackup *backup, BMEditMesh *em, int recalctess)
* see: [#31811] */
void EDBM_mesh_ensure_valid_dm_hack(Scene *scene, BMEditMesh *em)
{
- if ((((ID *)em->ob->data)->flag & LIB_ID_RECALC) ||
+ if ((((ID *)em->ob->data)->tag & LIB_TAG_ID_RECALC) ||
(em->ob->recalc & OB_RECALC_DATA))
{
/* since we may not have done selection flushing */
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index 7650be941d4..1cab8918abc 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -1159,12 +1159,12 @@ static int object_delete_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
/* delete has to handle all open scenes */
- BKE_main_id_flag_listbase(&bmain->scene, LIB_DOIT, 1);
+ BKE_main_id_flag_listbase(&bmain->scene, LIB_TAG_DOIT, 1);
for (win = wm->windows.first; win; win = win->next) {
scene = win->screen->scene;
- if (scene->id.flag & LIB_DOIT) {
- scene->id.flag &= ~LIB_DOIT;
+ if (scene->id.tag & LIB_TAG_DOIT) {
+ scene->id.tag &= ~LIB_TAG_DOIT;
DAG_relations_tag_update(bmain);
@@ -1545,7 +1545,7 @@ static int convert_exec(bContext *C, wmOperator *op)
/* flag data thats not been edited (only needed for !keep_original) */
if (ob->data) {
- ((ID *)ob->data)->flag |= LIB_DOIT;
+ ((ID *)ob->data)->tag |= LIB_TAG_DOIT;
}
/* possible metaball basis is not in this scene */
@@ -1791,7 +1791,7 @@ static int convert_exec(bContext *C, wmOperator *op)
if (!keep_original && (ob->flag & OB_DONE)) {
DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
- ((ID *)ob->data)->flag &= ~LIB_DOIT; /* flag not to convert this datablock again */
+ ((ID *)ob->data)->tag &= ~LIB_TAG_DOIT; /* flag not to convert this datablock again */
}
}
CTX_DATA_END;
diff --git a/source/blender/editors/object/object_bake.c b/source/blender/editors/object/object_bake.c
index ecaa05ace99..888bf832042 100644
--- a/source/blender/editors/object/object_bake.c
+++ b/source/blender/editors/object/object_bake.c
@@ -267,7 +267,7 @@ static void clear_single_image(Image *image, ClearFlag flag)
const float disp_alpha[4] = {0.5f, 0.5f, 0.5f, 0.0f};
const float disp_solid[4] = {0.5f, 0.5f, 0.5f, 1.0f};
- if ((image->id.flag & LIB_DOIT) == 0) {
+ if ((image->id.tag & LIB_TAG_DOIT) == 0) {
ImBuf *ibuf = BKE_image_acquire_ibuf(image, NULL, NULL);
if (flag == CLEAR_TANGENT_NORMAL)
@@ -277,7 +277,7 @@ static void clear_single_image(Image *image, ClearFlag flag)
else
IMB_rectfill(ibuf, (ibuf->planes == R_IMF_PLANES_RGBA) ? vec_alpha : vec_solid);
- image->id.flag |= LIB_DOIT;
+ image->id.tag |= LIB_TAG_DOIT;
BKE_image_release_ibuf(image, ibuf, NULL);
}
@@ -288,7 +288,7 @@ static void clear_images_poly(MTexPoly *mtpoly, int totpoly, ClearFlag flag)
int a;
for (a = 0; a < totpoly; a++) {
- mtpoly[a].tpage->id.flag &= ~LIB_DOIT;
+ mtpoly[a].tpage->id.tag &= ~LIB_TAG_DOIT;
}
for (a = 0; a < totpoly; a++) {
@@ -296,7 +296,7 @@ static void clear_images_poly(MTexPoly *mtpoly, int totpoly, ClearFlag flag)
}
for (a = 0; a < totpoly; a++) {
- mtpoly[a].tpage->id.flag &= ~LIB_DOIT;
+ mtpoly[a].tpage->id.tag &= ~LIB_TAG_DOIT;
}
}
@@ -670,7 +670,7 @@ static void finish_bake_internal(BakeRender *bkr)
Mesh *me;
BLI_assert(BLI_thread_is_main());
for (me = G.main->mesh.first; me; me = me->id.next) {
- if (me->id.flag & LIB_DOIT) {
+ if (me->id.tag & LIB_TAG_DOIT) {
DAG_id_tag_update(&me->id, OB_RECALC_DATA);
BKE_mesh_tessface_clear(me);
}
diff --git a/source/blender/editors/object/object_bake_api.c b/source/blender/editors/object/object_bake_api.c
index e69f6174c98..93f9856b51a 100644
--- a/source/blender/editors/object/object_bake_api.c
+++ b/source/blender/editors/object/object_bake_api.c
@@ -421,7 +421,7 @@ static bool bake_object_check(Object *ob, ReportList *reports)
return false;
}
- image->id.flag |= LIB_DOIT;
+ image->id.tag |= LIB_TAG_DOIT;
}
return true;
}
@@ -478,7 +478,7 @@ static void bake_images_clear(Main *bmain, const bool is_tangent)
{
Image *image;
for (image = bmain->image.first; image; image = image->id.next) {
- if ((image->id.flag & LIB_DOIT) != 0) {
+ if ((image->id.tag & LIB_TAG_DOIT) != 0) {
RE_bake_ibuf_clear(image, is_tangent);
}
}
@@ -497,7 +497,7 @@ static void build_image_lookup(Main *bmain, Object *ob, BakeImages *bake_images)
Image *image;
ED_object_get_active_image(ob, i + 1, &image, NULL, NULL, NULL);
- if ((image->id.flag & LIB_DOIT)) {
+ if ((image->id.tag & LIB_TAG_DOIT)) {
for (j = 0; j < i; j++) {
if (bake_images->data[j].image == image) {
bake_images->lookup[i] = j;
@@ -508,7 +508,7 @@ static void build_image_lookup(Main *bmain, Object *ob, BakeImages *bake_images)
else {
bake_images->lookup[i] = tot_images;
bake_images->data[tot_images].image = image;
- image->id.flag |= LIB_DOIT;
+ image->id.tag |= LIB_TAG_DOIT;
tot_images++;
}
}
diff --git a/source/blender/editors/object/object_data_transfer.c b/source/blender/editors/object/object_data_transfer.c
index ac1935e9652..47ee6752e51 100644
--- a/source/blender/editors/object/object_data_transfer.c
+++ b/source/blender/editors/object/object_data_transfer.c
@@ -304,11 +304,11 @@ static void data_transfer_exec_preprocess_objects(
/* Do not transfer to linked data, not supported. */
BKE_reportf(op->reports, RPT_WARNING, "Skipping object '%s', linked data '%s' cannot be modified",
ob->id.name + 2, me->id.name + 2);
- me->id.flag &= ~LIB_DOIT;
+ me->id.tag &= ~LIB_TAG_DOIT;
continue;
}
- me->id.flag |= LIB_DOIT;
+ me->id.tag |= LIB_TAG_DOIT;
}
}
@@ -326,8 +326,8 @@ static bool data_transfer_exec_is_object_valid(
}
me = ob_dst->data;
- if (me->id.flag & LIB_DOIT) {
- me->id.flag &= ~LIB_DOIT;
+ if (me->id.tag & LIB_TAG_DOIT) {
+ me->id.tag &= ~LIB_TAG_DOIT;
return true;
}
else if (me->id.lib == NULL) {
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index a1f59166c81..32a7806907b 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -1959,7 +1959,7 @@ static void single_mat_users(Scene *scene, const int flag, const bool do_texture
for (a = 1; a <= ob->totcol; a++) {
ma = give_current_material(ob, a);
if (ma) {
- /* do not test for LIB_NEW: this functions guaranteed delivers single_users! */
+ /* do not test for LIB_TAG_NEW: this functions guaranteed delivers single_users! */
if (ma->id.us > 1) {
man = BKE_material_copy(ma);
@@ -2010,14 +2010,14 @@ static void do_single_tex_user(Tex **from)
static void single_tex_users_expand(Main *bmain)
{
- /* only when 'parent' blocks are LIB_NEW */
+ /* only when 'parent' blocks are LIB_TAG_NEW */
Material *ma;
Lamp *la;
World *wo;
int b;
for (ma = bmain->mat.first; ma; ma = ma->id.next) {
- if (ma->id.flag & LIB_NEW) {
+ if (ma->id.tag & LIB_TAG_NEW) {
for (b = 0; b < MAX_MTEX; b++) {
if (ma->mtex[b] && ma->mtex[b]->tex) {
do_single_tex_user(&(ma->mtex[b]->tex));
@@ -2027,7 +2027,7 @@ static void single_tex_users_expand(Main *bmain)
}
for (la = bmain->lamp.first; la; la = la->id.next) {
- if (la->id.flag & LIB_NEW) {
+ if (la->id.tag & LIB_TAG_NEW) {
for (b = 0; b < MAX_MTEX; b++) {
if (la->mtex[b] && la->mtex[b]->tex) {
do_single_tex_user(&(la->mtex[b]->tex));
@@ -2037,7 +2037,7 @@ static void single_tex_users_expand(Main *bmain)
}
for (wo = bmain->world.first; wo; wo = wo->id.next) {
- if (wo->id.flag & LIB_NEW) {
+ if (wo->id.tag & LIB_TAG_NEW) {
for (b = 0; b < MAX_MTEX; b++) {
if (wo->mtex[b] && wo->mtex[b]->tex) {
do_single_tex_user(&(wo->mtex[b]->tex));
@@ -2049,7 +2049,7 @@ static void single_tex_users_expand(Main *bmain)
static void single_mat_users_expand(Main *bmain)
{
- /* only when 'parent' blocks are LIB_NEW */
+ /* only when 'parent' blocks are LIB_TAG_NEW */
Object *ob;
Mesh *me;
Curve *cu;
@@ -2058,24 +2058,24 @@ static void single_mat_users_expand(Main *bmain)
int a;
for (ob = bmain->object.first; ob; ob = ob->id.next)
- if (ob->id.flag & LIB_NEW)
+ if (ob->id.tag & LIB_TAG_NEW)
new_id_matar(ob->mat, ob->totcol);
for (me = bmain->mesh.first; me; me = me->id.next)
- if (me->id.flag & LIB_NEW)
+ if (me->id.tag & LIB_TAG_NEW)
new_id_matar(me->mat, me->totcol);
for (cu = bmain->curve.first; cu; cu = cu->id.next)
- if (cu->id.flag & LIB_NEW)
+ if (cu->id.tag & LIB_TAG_NEW)
new_id_matar(cu->mat, cu->totcol);
for (mb = bmain->mball.first; mb; mb = mb->id.next)
- if (mb->id.flag & LIB_NEW)
+ if (mb->id.tag & LIB_TAG_NEW)
new_id_matar(mb->mat, mb->totcol);
/* material imats */
for (ma = bmain->mat.first; ma; ma = ma->id.next)
- if (ma->id.flag & LIB_NEW)
+ if (ma->id.tag & LIB_TAG_NEW)
for (a = 0; a < MAX_MTEX; a++)
if (ma->mtex[a])
ID_NEW(ma->mtex[a]->object);
@@ -2126,7 +2126,7 @@ enum {
static bool tag_localizable_looper(void *UNUSED(user_data), ID **id_pointer, const int UNUSED(cd_flag))
{
if (*id_pointer) {
- (*id_pointer)->flag &= ~LIB_DOIT;
+ (*id_pointer)->tag &= ~LIB_TAG_DOIT;
}
return true;
}
@@ -2137,19 +2137,19 @@ static void tag_localizable_objects(bContext *C, const int mode)
BKE_main_id_tag_all(bmain, false);
- /* Set LIB_DOIT flag for all selected objects, so next we can check whether
+ /* Set LIB_TAG_DOIT flag for all selected objects, so next we can check whether
* object is gonna to become local or not.
*/
CTX_DATA_BEGIN (C, Object *, object, selected_objects)
{
- object->id.flag |= LIB_DOIT;
+ object->id.tag |= LIB_TAG_DOIT;
/* If data is also gonna to become local, mark data we're interested in
* as gonna-to-be-local.
*/
if (mode == MAKE_LOCAL_SELECT_OBDATA && object->data) {
ID *data_id = (ID *) object->data;
- data_id->flag |= LIB_DOIT;
+ data_id->tag |= LIB_TAG_DOIT;
}
}
CTX_DATA_END;
@@ -2158,12 +2158,12 @@ static void tag_localizable_objects(bContext *C, const int mode)
* them for modifiers or constraints.
*/
for (Object *object = bmain->object.first; object; object = object->id.next) {
- if ((object->id.flag & LIB_DOIT) == 0) {
+ if ((object->id.tag & LIB_TAG_DOIT) == 0) {
BKE_library_foreach_ID_link(&object->id, tag_localizable_looper, NULL, IDWALK_READONLY);
}
if (object->data) {
ID *data_id = (ID *) object->data;
- if ((data_id->flag & LIB_DOIT) == 0) {
+ if ((data_id->tag & LIB_TAG_DOIT) == 0) {
BKE_library_foreach_ID_link(data_id, tag_localizable_looper, NULL, IDWALK_READONLY);
}
}
@@ -2230,7 +2230,7 @@ static int make_local_exec(bContext *C, wmOperator *op)
CTX_DATA_BEGIN (C, Object *, ob, selected_objects)
{
- if ((ob->id.flag & LIB_DOIT) == 0) {
+ if ((ob->id.tag & LIB_TAG_DOIT) == 0) {
continue;
}
@@ -2250,7 +2250,7 @@ static int make_local_exec(bContext *C, wmOperator *op)
CTX_DATA_BEGIN (C, Object *, ob, selected_objects)
{
- if ((ob->id.flag & LIB_DOIT) == 0) {
+ if ((ob->id.tag & LIB_TAG_DOIT) == 0) {
continue;
}
@@ -2283,7 +2283,7 @@ static int make_local_exec(bContext *C, wmOperator *op)
if (mode == MAKE_LOCAL_SELECT_OBDATA_MATERIAL) {
CTX_DATA_BEGIN (C, Object *, ob, selected_objects)
{
- if ((ob->id.flag & LIB_DOIT) == 0) {
+ if ((ob->id.tag & LIB_TAG_DOIT) == 0) {
continue;
}
diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c
index 8f00c0eb467..d2bbb73b597 100644
--- a/source/blender/editors/object/object_transform.c
+++ b/source/blender/editors/object/object_transform.c
@@ -768,9 +768,9 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
for (tob = bmain->object.first; tob; tob = tob->id.next) {
if (tob->data)
- ((ID *)tob->data)->flag &= ~LIB_DOIT;
+ ((ID *)tob->data)->tag &= ~LIB_TAG_DOIT;
if (tob->dup_group)
- ((ID *)tob->dup_group)->flag &= ~LIB_DOIT;
+ ((ID *)tob->dup_group)->tag &= ~LIB_TAG_DOIT;
}
for (ctx_ob = ctx_data_list.first;
@@ -791,7 +791,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
if (ob->data == NULL) {
/* special support for dupligroups */
- if ((ob->transflag & OB_DUPLIGROUP) && ob->dup_group && (ob->dup_group->id.flag & LIB_DOIT) == 0) {
+ if ((ob->transflag & OB_DUPLIGROUP) && ob->dup_group && (ob->dup_group->id.tag & LIB_TAG_DOIT) == 0) {
if (ob->dup_group->id.lib) {
tot_lib_error++;
}
@@ -812,7 +812,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
add_v3_v3(ob->dup_group->dupli_ofs, cent);
tot_change++;
- ob->dup_group->id.flag |= LIB_DOIT;
+ ob->dup_group->id.tag |= LIB_TAG_DOIT;
do_inverse_offset = true;
}
}
@@ -833,7 +833,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
BKE_mesh_translate(me, cent_neg, 1);
tot_change++;
- me->id.flag |= LIB_DOIT;
+ me->id.tag |= LIB_TAG_DOIT;
do_inverse_offset = true;
}
else if (ELEM(ob->type, OB_CURVE, OB_SURF)) {
@@ -851,7 +851,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
BKE_curve_translate(cu, cent_neg, 1);
tot_change++;
- cu->id.flag |= LIB_DOIT;
+ cu->id.tag |= LIB_TAG_DOIT;
do_inverse_offset = true;
if (obedit) {
@@ -885,7 +885,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
cu->yof = cu->yof - (cent[1] / cu->fsize);
tot_change++;
- cu->id.flag |= LIB_DOIT;
+ cu->id.tag |= LIB_TAG_DOIT;
do_inverse_offset = true;
}
}
@@ -906,7 +906,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
ED_armature_origin_set(scene, ob, cursor, centermode, around);
tot_change++;
- arm->id.flag |= LIB_DOIT;
+ arm->id.tag |= LIB_TAG_DOIT;
/* do_inverse_offset = true; */ /* docenter_armature() handles this */
BKE_object_where_is_calc(scene, ob);
@@ -929,7 +929,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
BKE_mball_translate(mb, cent_neg);
tot_change++;
- mb->id.flag |= LIB_DOIT;
+ mb->id.tag |= LIB_TAG_DOIT;
do_inverse_offset = true;
if (obedit) {
@@ -950,7 +950,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
BKE_lattice_translate(lt, cent_neg, 1);
tot_change++;
- lt->id.flag |= LIB_DOIT;
+ lt->id.tag |= LIB_TAG_DOIT;
do_inverse_offset = true;
}
@@ -1011,7 +1011,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op)
BLI_freelistN(&ctx_data_list);
for (tob = bmain->object.first; tob; tob = tob->id.next)
- if (tob->data && (((ID *)tob->data)->flag & LIB_DOIT))
+ if (tob->data && (((ID *)tob->data)->tag & LIB_TAG_DOIT))
DAG_id_tag_update(&tob->id, OB_RECALC_OB | OB_RECALC_DATA);
if (tot_change) {
diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c
index a7038ac53cc..143003cc4e6 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -786,7 +786,7 @@ static void clean_viewport_memory(Main *bmain, Scene *scene, int renderlay)
Base *base;
for (object = bmain->object.first; object; object = object->id.next) {
- object->id.flag |= LIB_DOIT;
+ object->id.tag |= LIB_TAG_DOIT;
}
for (SETLOOPER(scene, sce_iter, base)) {
@@ -794,16 +794,16 @@ static void clean_viewport_memory(Main *bmain, Scene *scene, int renderlay)
continue;
}
if (RE_allow_render_generic_object(base->object)) {
- base->object->id.flag &= ~LIB_DOIT;
+ base->object->id.tag &= ~LIB_TAG_DOIT;
}
}
for (SETLOOPER(scene, sce_iter, base)) {
object = base->object;
- if ((object->id.flag & LIB_DOIT) == 0) {
+ if ((object->id.tag & LIB_TAG_DOIT) == 0) {
continue;
}
- object->id.flag &= ~LIB_DOIT;
+ object->id.tag &= ~LIB_TAG_DOIT;
BKE_object_free_derived_caches(object);
}
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index a312888fc44..ba5bea464d9 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -1317,15 +1317,15 @@ static int node_read_renderlayers_exec(bContext *C, wmOperator *UNUSED(op))
/* first tag scenes unread */
for (scene = bmain->scene.first; scene; scene = scene->id.next)
- scene->id.flag |= LIB_DOIT;
+ scene->id.tag |= LIB_TAG_DOIT;
for (node = snode->edittree->nodes.first; node; node = node->next) {
if (node->type == CMP_NODE_R_LAYERS) {
ID *id = node->id;
- if (id->flag & LIB_DOIT) {
+ if (id->tag & LIB_TAG_DOIT) {
RE_ReadRenderResult(curscene, (Scene *)id);
ntreeCompositTagRender((Scene *)id);
- id->flag &= ~LIB_DOIT;
+ id->tag &= ~LIB_TAG_DOIT;
}
}
}
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c
index 14f397f61fe..09c9f88c55f 100644
--- a/source/blender/editors/space_outliner/outliner_draw.c
+++ b/source/blender/editors/space_outliner/outliner_draw.c
@@ -1319,7 +1319,7 @@ static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeSto
case ID_GR:
tselem_draw_icon_uibut(&arg, ICON_GROUP); break;
case ID_LI:
- if (tselem->id->flag & LIB_MISSING) {
+ if (tselem->id->tag & LIB_TAG_MISSING) {
tselem_draw_icon_uibut(&arg, ICON_LIBRARY_DATA_BROKEN);
}
else if (((Library *)tselem->id)->parent) {
@@ -1563,10 +1563,10 @@ static void outliner_draw_tree_element(
if (tselem->type == 0 && tselem->id->lib) {
glPixelTransferf(GL_ALPHA_SCALE, 0.5f);
- if (tselem->id->flag & LIB_MISSING) {
+ if (tselem->id->tag & LIB_TAG_MISSING) {
UI_icon_draw((float)startx + offsx, (float)*starty + 2 * ufac, ICON_LIBRARY_DATA_BROKEN);
}
- else if (tselem->id->flag & LIB_INDIRECT) {
+ else if (tselem->id->tag & LIB_TAG_INDIRECT) {
UI_icon_draw((float)startx + offsx, (float)*starty + 2 * ufac, ICON_LIBRARY_DATA_INDIRECT);
}
else {
diff --git a/source/blender/editors/space_outliner/outliner_tools.c b/source/blender/editors/space_outliner/outliner_tools.c
index e2f5747da8e..6e4e8e53510 100644
--- a/source/blender/editors/space_outliner/outliner_tools.c
+++ b/source/blender/editors/space_outliner/outliner_tools.c
@@ -408,7 +408,7 @@ static void object_delete_cb(bContext *C, Scene *scene, TreeElement *te,
static void id_local_cb(bContext *C, Scene *UNUSED(scene), TreeElement *UNUSED(te),
TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem, void *UNUSED(user_data))
{
- if (tselem->id->lib && (tselem->id->flag & LIB_EXTERN)) {
+ if (tselem->id->lib && (tselem->id->tag & LIB_TAG_EXTERN)) {
/* if the ID type has no special local function,
* just clear the lib */
if (id_make_local(tselem->id, false) == false) {
diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c
index f2d8321daa3..9175a092cee 100644
--- a/source/blender/editors/space_outliner/outliner_tree.c
+++ b/source/blender/editors/space_outliner/outliner_tree.c
@@ -392,7 +392,7 @@ static void outliner_add_line_styles(SpaceOops *soops, ListBase *lb, Scene *sce,
for (lineset = srl->freestyleConfig.linesets.first; lineset; lineset = lineset->next) {
FreestyleLineStyle *linestyle = lineset->linestyle;
if (linestyle) {
- linestyle->id.flag |= LIB_DOIT;
+ linestyle->id.tag |= LIB_TAG_DOIT;
}
}
}
@@ -400,9 +400,9 @@ static void outliner_add_line_styles(SpaceOops *soops, ListBase *lb, Scene *sce,
for (lineset = srl->freestyleConfig.linesets.first; lineset; lineset = lineset->next) {
FreestyleLineStyle *linestyle = lineset->linestyle;
if (linestyle) {
- if (!(linestyle->id.flag & LIB_DOIT))
+ if (!(linestyle->id.tag & LIB_TAG_DOIT))
continue;
- linestyle->id.flag &= ~LIB_DOIT;
+ linestyle->id.tag &= ~LIB_TAG_DOIT;
outliner_add_element(soops, lb, linestyle, te, 0, 0);
}
}
@@ -1630,7 +1630,7 @@ void outliner_build_tree(Main *mainvar, Scene *scene, SpaceOops *soops)
lib = (Library *)tselem->id;
if (lib && lib->parent) {
par = (TreeElement *)lib->parent->id.newid;
- if (tselem->id->flag & LIB_INDIRECT) {
+ if (tselem->id->tag & LIB_TAG_INDIRECT) {
/* Only remove from 'first level' if lib is not also directly used. */
BLI_remlink(&soops->tree, ten);
BLI_addtail(&par->subtree, ten);
diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h
index 1d140f9570d..74a63be8bbc 100644
--- a/source/blender/makesdna/DNA_ID.h
+++ b/source/blender/makesdna/DNA_ID.h
@@ -123,12 +123,16 @@ typedef struct ID {
struct Library *lib;
char name[66]; /* MAX_ID_NAME */
/**
- * LIB_... flags report on status of the datablock this ID belongs
- * to.
+ * LIB_... flags report on status of the datablock this ID belongs to (persistent, saved to and read from .blend).
*/
short flag;
+ /**
+ * LIB_TAG_... tags (runtime only, cleared at read time).
+ */
+ short tag;
+ short pad_s1;
int us;
- int icon_id, pad2;
+ int icon_id;
IDProperty *properties;
} ID;
@@ -261,7 +265,7 @@ typedef struct PreviewImage {
#define ID_BLEND_PATH(_bmain, _id) ((_id)->lib ? (_id)->lib->filepath : (_bmain)->name)
-#define ID_MISSING(_id) (((_id)->flag & LIB_MISSING) != 0)
+#define ID_MISSING(_id) (((_id)->tag & LIB_TAG_MISSING) != 0)
#ifdef GS
# undef GS
@@ -272,31 +276,56 @@ typedef struct PreviewImage {
#define ID_NEW_US(a) if ( (a)->id.newid) { (a) = (void *)(a)->id.newid; (a)->id.us++; }
#define ID_NEW_US2(a) if (((ID *)a)->newid) { (a) = ((ID *)a)->newid; ((ID *)a)->us++; }
-/* id->flag: set first 8 bits always at zero while reading */
+/* id->flag (persitent). */
enum {
- LIB_LOCAL = 0,
- LIB_EXTERN = 1 << 0,
- LIB_INDIRECT = 1 << 1,
- LIB_NEED_EXPAND = 1 << 3,
- LIB_TESTEXT = (LIB_NEED_EXPAND | LIB_EXTERN),
- LIB_TESTIND = (LIB_NEED_EXPAND | LIB_INDIRECT),
- LIB_READ = 1 << 4,
- LIB_NEED_LINK = 1 << 5,
- /* tag datablock as a place-holder (because the real one could not be linked from its library e.g.). */
- LIB_MISSING = 1 << 6,
-
- LIB_NEW = 1 << 8,
LIB_FAKEUSER = 1 << 9,
- /* free test flag */
- LIB_DOIT = 1 << 10,
- /* tag existing data before linking so we know what is new */
- LIB_PRE_EXISTING = 1 << 11,
- /* runtime */
- LIB_ID_RECALC = 1 << 12,
- LIB_ID_RECALC_DATA = 1 << 13,
- LIB_ANIM_NO_RECALC = 1 << 14,
-
- LIB_ID_RECALC_ALL = (LIB_ID_RECALC | LIB_ID_RECALC_DATA),
+};
+
+/**
+ * id->tag (runtime-only).
+ *
+ * Those flags belong to three different categories, which have different expected handling in code:
+ *
+ * - RESET_BEFORE_USE: piece of code that wants to use such flag has to ensure they are properly 'reset' first.
+ * - RESET_AFTER_USE: piece of code that wants to use such flag has to ensure they are properly 'reset' after usage
+ * (though 'lifetime' of those flags is a bit fuzzy, e.g. _RECALC ones are reset on depsgraph
+ * evaluation...).
+ * - RESET_NEVER: those flags are 'status' one, and never actually need any reset (except on initialization
+ * during .blend file reading).
+ */
+enum {
+ /* RESET_NEVER Datablock is from current .blend file. */
+ LIB_TAG_LOCAL = 0,
+ /* RESET_NEVER Datablock is from a library, but is used (linked) directly by current .blend file. */
+ LIB_TAG_EXTERN = 1 << 0,
+ /* RESET_NEVER Datablock is from a library, and is only used (linked) inderectly through other libraries. */
+ LIB_TAG_INDIRECT = 1 << 1,
+
+ /* RESET_AFTER_USE Three flags used internally in readfile.c, to mark IDs needing to be read (only done once). */
+ LIB_TAG_NEED_EXPAND = 1 << 3,
+ LIB_TAG_TESTEXT = (LIB_TAG_NEED_EXPAND | LIB_TAG_EXTERN),
+ LIB_TAG_TESTIND = (LIB_TAG_NEED_EXPAND | LIB_TAG_INDIRECT),
+ /* RESET_AFTER_USE Flag used internally in readfile.c, to mark IDs needing to be linked from a library. */
+ LIB_TAG_READ = 1 << 4,
+ /* RESET_AFTER_USE */
+ LIB_TAG_NEED_LINK = 1 << 5,
+
+ /* RESET_NEVER tag datablock as a place-holder (because the real one could not be linked from its library e.g.). */
+ LIB_TAG_MISSING = 1 << 6,
+
+ /* RESET_AFTER_USE tag newly duplicated/copied IDs. */
+ LIB_TAG_NEW = 1 << 8,
+ /* RESET_BEFORE_USE free test flag.
+ * TODO make it a RESET_AFTER_USE too. */
+ LIB_TAG_DOIT = 1 << 10,
+ /* RESET_AFTER_USE tag existing data before linking so we know what is new. */
+ LIB_TAG_PRE_EXISTING = 1 << 11,
+
+ /* RESET_AFTER_USE, used by update code (depsgraph). */
+ LIB_TAG_ID_RECALC = 1 << 12,
+ LIB_TAG_ID_RECALC_DATA = 1 << 13,
+ LIB_TAG_ANIM_NO_RECALC = 1 << 14,
+ LIB_TAG_ID_RECALC_ALL = (LIB_TAG_ID_RECALC | LIB_TAG_ID_RECALC_DATA),
};
/* To filter ID types (filter_id) */
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c
index 5d36a0a4d4e..609e9d2f8db 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -934,24 +934,24 @@ static void rna_def_ID(BlenderRNA *brna)
RNA_def_property_boolean_funcs(prop, NULL, "rna_ID_fake_user_set");
prop = RNA_def_property(srna, "tag", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", LIB_DOIT);
+ RNA_def_property_boolean_sdna(prop, NULL, "tag", LIB_TAG_DOIT);
RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
RNA_def_property_ui_text(prop, "Tag",
"Tools can use this to tag data for their own purposes "
"(initial state is undefined)");
prop = RNA_def_property(srna, "is_updated", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", LIB_ID_RECALC);
+ RNA_def_property_boolean_sdna(prop, NULL, "tag", LIB_TAG_ID_RECALC);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Is Updated", "Datablock is tagged for recalculation");
prop = RNA_def_property(srna, "is_updated_data", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", LIB_ID_RECALC_DATA);
+ RNA_def_property_boolean_sdna(prop, NULL, "tag", LIB_TAG_ID_RECALC_DATA);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Is Updated Data", "Datablock data is tagged for recalculation");
prop = RNA_def_property(srna, "is_library_indirect", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", LIB_INDIRECT);
+ RNA_def_property_boolean_sdna(prop, NULL, "tag", LIB_TAG_INDIRECT);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Is Indirect", "Is this ID block linked indirectly");
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 2624e351c74..a0ff429a7e2 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -1539,11 +1539,11 @@ static void object_simplify_update(Object *ob)
ModifierData *md;
ParticleSystem *psys;
- if ((ob->id.flag & LIB_DOIT) == 0) {
+ if ((ob->id.tag & LIB_TAG_DOIT) == 0) {
return;
}
- ob->id.flag &= ~LIB_DOIT;
+ ob->id.tag &= ~LIB_TAG_DOIT;
for (md = ob->modifiers.first; md; md = md->next) {
if (ELEM(md->type, eModifierType_Subsurf, eModifierType_Multires, eModifierType_ParticleSystem)) {
diff --git a/source/blender/modifiers/intern/MOD_correctivesmooth.c b/source/blender/modifiers/intern/MOD_correctivesmooth.c
index d5b4daca3b7..4046620592b 100644
--- a/source/blender/modifiers/intern/MOD_correctivesmooth.c
+++ b/source/blender/modifiers/intern/MOD_correctivesmooth.c
@@ -575,7 +575,7 @@ static void correctivesmooth_modifier_do(
const bool force_delta_cache_update =
/* XXX, take care! if mesh data its self changes we need to forcefully recalculate deltas */
((csmd->rest_source == MOD_CORRECTIVESMOOTH_RESTSOURCE_ORCO) &&
- (((ID *)ob->data)->flag & LIB_ID_RECALC));
+ (((ID *)ob->data)->tag & LIB_TAG_ID_RECALC));
bool use_only_smooth = (csmd->flag & MOD_CORRECTIVESMOOTH_ONLY_SMOOTH) != 0;
MDeformVert *dvert = NULL;
diff --git a/source/blender/modifiers/intern/MOD_smoke.c b/source/blender/modifiers/intern/MOD_smoke.c
index f0f235c8ad5..3dcb03da52c 100644
--- a/source/blender/modifiers/intern/MOD_smoke.c
+++ b/source/blender/modifiers/intern/MOD_smoke.c
@@ -123,10 +123,10 @@ static void update_depsgraph_flow_coll_object(DagForest *forest,
Object *object2)
{
SmokeModifierData *smd;
- if ((object2->id.flag & LIB_DOIT) == 0) {
+ if ((object2->id.tag & LIB_TAG_DOIT) == 0) {
return;
}
- object2->id.flag &= ~LIB_DOIT;
+ object2->id.tag &= ~LIB_TAG_DOIT;
smd = (SmokeModifierData *)modifiers_findByType(object2, eModifierType_Smoke);
if (smd && (((smd->type & MOD_SMOKE_TYPE_FLOW) && smd->flow) ||
((smd->type & MOD_SMOKE_TYPE_COLL) && smd->coll)))
@@ -153,10 +153,10 @@ static void update_depsgraph_field_source_object(DagForest *forest,
Object *object,
Object *object2)
{
- if ((object2->id.flag & LIB_DOIT) == 0) {
+ if ((object2->id.tag & LIB_TAG_DOIT) == 0) {
return;
}
- object2->id.flag &= ~LIB_DOIT;
+ object2->id.tag &= ~LIB_TAG_DOIT;
if (object2->pd && object2->pd->forcefield == PFIELD_SMOKEFLOW && object2->pd->f_source == object) {
DagNode *node2 = dag_get_node(forest, object2);
dag_add_relation(forest, obNode, node2, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Field Source Object");
@@ -233,10 +233,10 @@ static void update_depsgraph_flow_coll_object_new(struct DepsNodeHandle *node,
Object *object2)
{
SmokeModifierData *smd;
- if ((object2->id.flag & LIB_DOIT) == 0) {
+ if ((object2->id.tag & LIB_TAG_DOIT) == 0) {
return;
}
- object2->id.flag &= ~LIB_DOIT;
+ object2->id.tag &= ~LIB_TAG_DOIT;
smd = (SmokeModifierData *)modifiers_findByType(object2, eModifierType_Smoke);
if (smd && (((smd->type & MOD_SMOKE_TYPE_FLOW) && smd->flow) ||
((smd->type & MOD_SMOKE_TYPE_COLL) && smd->coll)))
@@ -262,10 +262,10 @@ static void update_depsgraph_field_source_object_new(struct DepsNodeHandle *node
Object *object,
Object *object2)
{
- if ((object2->id.flag & LIB_DOIT) == 0) {
+ if ((object2->id.tag & LIB_TAG_DOIT) == 0) {
return;
}
- object2->id.flag &= ~LIB_DOIT;
+ object2->id.tag &= ~LIB_TAG_DOIT;
if (object2->pd && object2->pd->forcefield == PFIELD_SMOKEFLOW && object2->pd->f_source == object) {
DEG_add_object_relation(node, object2, DEG_OB_COMP_TRANSFORM, "Field Source Object");
DEG_add_object_relation(node, object2, DEG_OB_COMP_GEOMETRY, "Field Source Object");
diff --git a/source/blender/python/intern/bpy_library.c b/source/blender/python/intern/bpy_library.c
index 0912ac0b637..d241a766b83 100644
--- a/source/blender/python/intern/bpy_library.c
+++ b/source/blender/python/intern/bpy_library.c
@@ -332,7 +332,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args))
Main *mainl = NULL;
int err = 0;
- BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, true);
+ BKE_main_id_flag_all(bmain, LIB_TAG_PRE_EXISTING, true);
/* here appending/linking starts */
mainl = BLO_library_link_begin(bmain, &(self->blo_handle), self->relpath);
@@ -400,7 +400,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args))
/* exception raised above, XXX, this leaks some memory */
BLO_blendhandle_close(self->blo_handle);
self->blo_handle = NULL;
- BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, false);
+ BKE_main_id_flag_all(bmain, LIB_TAG_PRE_EXISTING, false);
return NULL;
}
else {
@@ -420,7 +420,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args))
}
}
- BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, false);
+ BKE_main_id_flag_all(bmain, LIB_TAG_PRE_EXISTING, false);
/* finally swap the capsules for real bpy objects
* important since BLO_library_append_end initializes NodeTree types used by srna->refine */
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) */
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 5daa622a029..7ee5f363e4b 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -2624,8 +2624,8 @@ static int wm_link_append_exec(bContext *C, wmOperator *op)
/* tag everything, all untagged data can be made local
* its also generally useful to know what is new
*
- * take extra care BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, false) is called after! */
- BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, true);
+ * take extra care BKE_main_id_flag_all(bmain, LIB_TAG_PRE_EXISTING, false) is called after! */
+ BKE_main_id_flag_all(bmain, LIB_TAG_PRE_EXISTING, true);
/* We define our working data...
* Note that here, each item 'uses' one library, and only one. */
@@ -2705,7 +2705,7 @@ static int wm_link_append_exec(bContext *C, wmOperator *op)
/* important we unset, otherwise these object wont
* link into other scenes from this blend file */
- BKE_main_id_flag_all(bmain, LIB_PRE_EXISTING, false);
+ BKE_main_id_flag_all(bmain, LIB_TAG_PRE_EXISTING, false);
/* recreate dependency graph to include new objects */
DAG_scene_relations_rebuild(bmain, scene);
@@ -4832,11 +4832,11 @@ static bool previews_id_ensure_callback(void *todo_v, ID **idptr, int UNUSED(cd_
PreviewsIDEnsureStack *todo = todo_v;
ID *id = *idptr;
- if (id && (id->flag & LIB_DOIT)) {
+ if (id && (id->tag & LIB_TAG_DOIT)) {
if (ELEM(GS(id->name), ID_MA, ID_TE, ID_IM, ID_WO, ID_LA)) {
previews_id_ensure(todo->C, todo->scene, id);
}
- id->flag &= ~LIB_DOIT; /* Tag the ID as done in any case. */
+ id->tag &= ~LIB_TAG_DOIT; /* Tag the ID as done in any case. */
BLI_LINKSTACK_PUSH(todo->id_stack, id);
}
@@ -4852,8 +4852,8 @@ static int previews_ensure_exec(bContext *C, wmOperator *UNUSED(op))
ID *id;
int i;
- /* We use LIB_DOIT to check whether we have already handled a given ID or not. */
- BKE_main_id_flag_all(bmain, LIB_DOIT, true);
+ /* We use LIB_TAG_DOIT to check whether we have already handled a given ID or not. */
+ BKE_main_id_flag_all(bmain, LIB_TAG_DOIT, true);
BLI_LINKSTACK_INIT(preview_id_stack.id_stack);
diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
index 6cbb8e08cf5..ad1fdf2f06a 100644
--- a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
+++ b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
@@ -1438,18 +1438,18 @@ RAS_MeshObject *KX_BlenderSceneConverter::ConvertMeshSpecial(KX_Scene *kx_scene,
/* ensure all materials are tagged */
for (int i = 0; i < mesh->totcol; i++) {
if (mesh->mat[i])
- mesh->mat[i]->id.flag &= ~LIB_DOIT;
+ mesh->mat[i]->id.tag &= ~LIB_TAG_DOIT;
}
for (int i = 0; i < mesh->totcol; i++) {
Material *mat_old = mesh->mat[i];
/* if its tagged its a replaced material */
- if (mat_old && (mat_old->id.flag & LIB_DOIT) == 0) {
+ if (mat_old && (mat_old->id.tag & LIB_TAG_DOIT) == 0) {
Material *mat_old = mesh->mat[i];
Material *mat_new = BKE_material_copy(mat_old);
- mat_new->id.flag |= LIB_DOIT;
+ mat_new->id.tag |= LIB_TAG_DOIT;
id_us_min(&mat_old->id);
BLI_remlink(&G.main->mat, mat_new); // BKE_material_copy uses G.main, and there is no BKE_material_copy_ex
diff --git a/source/gameengine/Ketsji/BL_ActionManager.cpp b/source/gameengine/Ketsji/BL_ActionManager.cpp
index 491be035d66..35f605f1a5f 100644
--- a/source/gameengine/Ketsji/BL_ActionManager.cpp
+++ b/source/gameengine/Ketsji/BL_ActionManager.cpp
@@ -28,7 +28,7 @@
#include "BL_ActionManager.h"
#include "DNA_ID.h"
-#define IS_TAGGED(_id) ((_id) && (((ID *)_id)->flag & LIB_DOIT))
+#define IS_TAGGED(_id) ((_id) && (((ID *)_id)->tag & LIB_TAG_DOIT))
BL_ActionManager::BL_ActionManager(class KX_GameObject *obj):
m_obj(obj),
diff --git a/source/gameengine/Ketsji/KX_Scene.h b/source/gameengine/Ketsji/KX_Scene.h
index 046ad25c09c..c43b7be45dc 100644
--- a/source/gameengine/Ketsji/KX_Scene.h
+++ b/source/gameengine/Ketsji/KX_Scene.h
@@ -93,7 +93,7 @@ class KX_ObstacleSimulation;
#endif
/* for ID freeing */
-#define IS_TAGGED(_id) ((_id) && (((ID *)_id)->flag & LIB_DOIT))
+#define IS_TAGGED(_id) ((_id) && (((ID *)_id)->tag & LIB_TAG_DOIT))
/**
* The KX_Scene holds all data for an independent scene. It relates