54 #undef INVALIDATE_ON_FLUSH
73 void flush_init_id_node_func(
void *__restrict data_v,
103 queue->push_back(op_node);
107 "Operation is entry point for update: %s\n",
182 queue->push_front(to_node);
192 void flush_engine_data_update(
ID *
id)
195 if (draw_data_list ==
nullptr) {
199 draw_data->recalc |=
id->recalc;
225 "Accumulated recalc bits for %s: %u\n",
227 (
unsigned int)id_cow->
recalc);
246 switch (
GS(id_orig->
name)) {
264 flush_engine_data_update(id_cow);
269 #ifdef INVALIDATE_ON_FLUSH
270 void invalidate_tagged_evaluated_transform(
ID *
id)
284 void invalidate_tagged_evaluated_geometry(
ID *
id)
301 #ifdef INVALIDATE_ON_FLUSH
314 switch (comp_node->
type) {
316 invalidate_tagged_evaluated_transform(id_cow);
319 invalidate_tagged_evaluated_geometry(id_cow);
346 flush_prepare(
graph);
352 update_ctx.
bmain = bmain;
357 while (!
queue.empty()) {
360 while (op_node !=
nullptr) {
367 flush_handle_component_node(
id_node, comp_node, &
queue);
369 op_node = flush_schedule_children(op_node, &
queue);
373 flush_editors_id_update(
graph, &update_ctx);
376 invalidate_tagged_evaluated_data(
graph);
General operations, lookup, etc. for blender objects.
void BKE_object_free_derived_caches(struct Object *ob)
#define LISTBASE_FOREACH(type, var, list)
void copy_vn_fl(float *array_tar, int size, float val)
void BLI_task_parallel_range(int start, int stop, void *userdata, TaskParallelRangeFunc func, const TaskParallelSettings *settings)
BLI_INLINE void BLI_parallel_range_settings_defaults(TaskParallelSettings *settings)
void DEG_graph_id_type_tag(struct Depsgraph *depsgraph, short id_type)
#define ID_IS_OVERRIDE_LIBRARY_VIRTUAL(_id)
#define ID_IS_OVERRIDE_LIBRARY_REAL(_id)
@ LIB_TAG_OVERRIDE_LIBRARY_AUTOREFRESH
Object is a sort of wrapper for general info.
struct DrawDataList * DRW_drawdatalist_from_id(struct ID *id)
#define DEG_DEBUG_PRINTF(depsgraph, type,...)
SyclQueue void void size_t num_bytes void
@ RELATION_FLAG_FLUSH_USER_EDIT_ONLY
void deg_editors_id_update(const DEGEditorUpdateContext *update_ctx, ID *id)
@ COMPONENT_STATE_SCHEDULED
void deg_graph_clear_tags(Depsgraph *graph)
DepsNodeFactory * type_get_factory(const NodeType type)
void deg_graph_flush_updates(Depsgraph *graph)
bool deg_copy_on_write_is_expanded(const ID *id_cow)
@ DEPSOP_FLAG_NEEDS_UPDATE
@ DEPSOP_FLAG_USER_MODIFIED
deque< OperationNode * > FlushQueue
struct Depsgraph * depsgraph
struct ViewLayer * view_layer
virtual OperationNode * get_entry_operation() override
Vector< OperationNode * > operations
virtual int id_recalc_tag() const =0
OperationNodes operations
Set< OperationNode * > entry_tags
TimeSourceNode * time_source
Map< ComponentIDKey, ComponentNode * > components
ComponentNode * find_component(NodeType type, const char *name="") const
virtual string identifier() const override
void flush_update_tag(Depsgraph *graph)