diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-06-01 17:44:24 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-06-02 00:54:36 +0300 |
commit | 071315e21bfec253639237e1244f0cc9b3f31812 (patch) | |
tree | 94ef1d114a055f8199a5de824b5ff174ad2226e4 /source/blender | |
parent | 46fc0bb87ebda166d08b23cbcca799acb2c54158 (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.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 2 | ||||
-rw-r--r-- | source/blender/depsgraph/intern/eval/deg_eval_flush.cc | 3 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 2 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_object_types.h | 8 |
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, |