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
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2017-06-01 17:44:24 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-06-02 00:54:36 +0300
commit071315e21bfec253639237e1244f0cc9b3f31812 (patch)
tree94ef1d114a055f8199a5de824b5ff174ad2226e4
parent46fc0bb87ebda166d08b23cbcca799acb2c54158 (diff)
DEG: Add per object update flag for Depsgraph.
This is in order to communicate what portion of this object has changed. For now it's just a bool, but it will be extended later.
-rw-r--r--source/blender/blenkernel/intern/object.c2
-rw-r--r--source/blender/depsgraph/intern/eval/deg_eval_flush.cc3
-rw-r--r--source/blender/draw/intern/draw_manager.c2
-rw-r--r--source/blender/makesdna/DNA_object_types.h8
4 files changed, 14 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index c24a6d3c791..9a2251b0f93 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -464,6 +464,8 @@ void BKE_object_free(Object *ob)
}
BLI_freelistN(&ob->drawdata);
+ ob->deg_update_flag = 0;
+
BKE_sculptsession_free(ob);
BLI_freelistN(&ob->pc_ids);
diff --git a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
index 34abbf46ed7..46b70c40b78 100644
--- a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
+++ b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc
@@ -191,6 +191,9 @@ void deg_graph_flush_updates(Main *bmain, Depsgraph *graph)
object->recalc |= OB_RECALC_DATA;
break;
}
+
+ /* TODO : replace with more granular flags */
+ object->deg_update_flag |= DEG_RUNTIME_DATA_UPDATE;
}
}
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index cf882717f8a..0c74b68402c 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -2869,6 +2869,8 @@ void DRW_draw_render_loop(
DEG_OBJECT_ITER(graph, ob);
{
DRW_engines_cache_populate(ob);
+ /* XXX find a better place for this. maybe Depsgraph? */
+ ob->deg_update_flag = 0;
}
DEG_OBJECT_ITER_END
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h
index 72a21437b7d..397781110b4 100644
--- a/source/blender/makesdna/DNA_object_types.h
+++ b/source/blender/makesdna/DNA_object_types.h
@@ -324,8 +324,9 @@ typedef struct Object {
struct IDProperty *base_collection_properties; /* used by depsgraph, flushed from base */
ListBase drawdata; /* runtime, ObjectEngineData */
+ int deg_update_flag; /* what has been updated in this object */
int base_selection_color; /* flushed by depsgraph only */
- int pad3[3];
+ int pad3[2];
} Object;
/* Warning, this is not used anymore because hooks are now modifiers */
@@ -626,6 +627,11 @@ enum {
OB_DEPS_EXTRA_DATA_RECALC = 1 << 1,
};
+/* ob->deg_update_flag */
+enum {
+ DEG_RUNTIME_DATA_UPDATE = 1 << 0,
+};
+
/* ob->scavisflag */
enum {
OB_VIS_SENS = 1 << 0,