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,