Page MenuHome

Readfile: Proper fix for `recalc` flags clearing in non-real IDs
ClosedPublic

Authored by Bastien Montagne (mont29) on Jan 29 2020, 5:05 PM.

Details

Summary

In current readfile.c code we have that:

https://developer.blender.org/diffusion/B/browse/master/source/blender/blenloader/intern/readfile.c$3523

This is unconditionally clearing nodetree's recalc flags, and was added by rB81a762e79f83 ages ago. Thing is, in main ID read code we only clear that flag when not in undo context.

This proposed change intends to properly handle those cases, by moving id.recalc flags clearing from read_libblock() to direct_link_id(), which is also called for all 'local' IDs (ntrees and master collections currently).

I’d expect that change to be straightforward (and maybe even fixing some odd undocumented bugs), however there is no .blend file testcases associated with changes in rB81a762e79f83, so wouldn’t mind that to be double checked before it goes to master.

Diff Detail

Repository
rB Blender

Event Timeline

Also, @Sergey Sharybin (sergey), just realized that deg_graph_clear_id_recalc_flags() does not take care of master collection of scenes, is that intended? Or are recalc flags for that fake ID never actually used anyway?

Looks good to me.

This revision is now accepted and ready to land.Jan 31 2020, 5:55 PM