Commit: 071315e21bfec253639237e1244f0cc9b3f31812
Author: Clément Foucault
Date:   Thu Jun 1 16:44:24 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB071315e21bfec253639237e1244f0cc9b3f31812

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.

===================================================================

M       source/blender/blenkernel/intern/object.c
M       source/blender/depsgraph/intern/eval/deg_eval_flush.cc
M       source/blender/draw/intern/draw_manager.c
M       source/blender/makesdna/DNA_object_types.h

===================================================================

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,

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to